как установить текст textview с элементом списка при нажатии элемента списка

Я хочу установить текст textview с помощью listitem при нажатии элемента списка. у меня есть список предметов. когда я нажимаю на элемент, он отображает html-страницу. У меня есть макет для отображения HTML-страницы (с использованием WebView), заголовка (TextView) и кнопки «Назад» (Imagebutton). Я могу без проблем отображать HTML-страницу в веб-просмотре. Проблема с заголовком. когда я нажимаю на элемент списка списка. я хочу, чтобы тот же элемент был установлен как заголовок в текстовом представлении. Пожалуйста, предложите мне. я могу поджарить список, но мне это не нужно. я хочу установить в тексте textview.пожалуйста, смотрите приведенный ниже код.

Темы.java

public class Topics extends ListActivity {

@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

          // storing string resources into Array
          String[] topic_sections =   getResources().getStringArray(R.array.topic_sections);

    // Binding resources Array to ListAdapter
         this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, topic_sections));
}     

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    change(position);
    }
void change(int position){
   switch(position){  
            case 0 :{
        Intent intent = new Intent(getApplicationContext(), TopicsDisplay.class);
        intent.setData(Uri.parse("file:///android_asset/home.html"));
        startActivity(intent);
            }
           break;

    case 1 :{
        Intent intent = new Intent(getApplicationContext(), TopicsDisplay.class);
        intent.setData(Uri.parse("file:///android_asset/program.html"));
        startActivity(intent);}
           break;

       } } }

ТемыDisplay.java

public class TopicsDisplay extends Activity {


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.topic_display);


WebView webview1 = (WebView) findViewById(R.id.webView1);
webview1.loadUrl(getIntent().getDataString());
webview1.getSettings().setBuiltInZoomControls(true);
webview1.setInitialScale(1);
webview1.setPadding(0, 0, 0, 0);




 }

 public void finishActivity(View v){
 finish();
  }

  }

list_item.xml

 <?xml version="1.0" encoding="utf-8"?>
 <!--  Single List Item Design -->
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/label"
      android:textColor="#ea9999"
      android:background="#000000"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:padding="10dp"
      android:textSize="20sp"
      android:textStyle="bold" 
      android:focusable="false"  
      android:clickable="false">
 </TextView>

тема_дисплей.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/myBackground">

 <RelativeLayout 

    android:orientation="horizontal" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >


    <ImageButton
    android:id="@+id/imageButton1"
    android:layout_width="42dp"
    android:layout_height="42dp"
    android:onClick="finishActivity"
    android:contentDescription="@string/back"
    android:src="@drawable/back_button" />

    <TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="45dp" 
    android:textStyle="bold"
    android:textColor="#000000"
    android:gravity="center_vertical"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:paddingLeft="10dp"
    android:id="@+id/header"

    />

 </RelativeLayout>

 <WebView 

    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:id="@+id/webView1"/>


 </LinearLayout>

После получения элемента из представления списка, как установить этот элемент списка в тексте текстового представления, которое находится в макете темы_дисплея.


person user1903270    schedule 13.02.2013    source источник


Ответы (1)


Я предлагаю поместить заголовок, который вы хотите показать, в дополнениях Intent. Это означает, что когда вы звоните

    Intent intent = new Intent(getApplicationContext(), TopicsDisplay.class);
    intent.setData(Uri.parse("file:///android_asset/home.html"));
    startActivity(intent);

вы должны поместить заголовок в дополнение к Intent перед вызовом метода startActivity() (в обоих случаях вы вызываете действие TopicsDisplay)

    Intent intent = new Intent(getApplicationContext(), TopicsDisplay.class);
    intent.setData(Uri.parse("file:///android_asset/home.html"));
    intent.putExtra("title", topic_sections[position]);
    startActivity(intent);

А затем в действии TopicsDisplay вы можете получить заголовок, вызвав

getIntent().getStringExtra("title")

Наконец, вы должны получить что-то вроде этого в методе TopicsDisplay.onCreate:

TextView titleTV = (TextView) findViewById(R.id.header)
titleTV.setText(getIntent().getStringExtra("title"));

Надеюсь это поможет!

person petlack    schedule 13.02.2013
comment
Это сработало для меня, большое спасибо. только небольшая модификация, которую я сделал, это то, что я использовал String selectedValue = String)getListAdapter().getItem(position); в методе change() после этого я передал строку selectedValue внутри putextra. Если я использую тематические разделы [позиция], я получаю сообщение об ошибке, например, тематические разделы не могут быть преобразованы в переменную. Так или иначе, идея putExtra мне очень помогла. Спасибо за помощь - person user1903270; 13.02.2013