2013-02-13 2 views
1

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

Topics.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; 

     } } } 

TopicsDisplay.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> 

topic_display.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> 

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

ответ

2

Мое предложение - поставить заголовок, который вы хотите показать в дополнительных целях 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 method:

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

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

+0

Это сработало для меня, спасибо большое. только небольшая модификация, которую я сделал, я использовал String selectedValue = String) getListAdapter(). getItem (position); в методе change() после этого я прошел строку selectedValue внутри putextra. Если я использую topic_sections [position], я получаю ошибку, например, «topic_sections не могут быть разрешены переменной». В любом случае идея putExtra действительно мне помогла. Спасибо за помощь – user1903270