【问题标题】:how set the text of textview with listitem when the listitem is clicked单击listitem时如何使用listitem设置textview的文本
【发布时间】:2013-02-13 08:19:37
【问题描述】:

我想在单击列表项时使用 listitem 设置 textview 的文本。 我有物品清单。当我单击一个项目时,它会显示 html 页面。我有显示 HTML 页面(使用 WebView)、标题(TextView)和后退按钮(Imagebutton)的布局。我能够在 webview 中显示 html 页面没有任何问题。问题出在标题上。当我单击列表的列表项时。我希望将相同的项目设置为文本视图中的标题。请给我建议。我可以为列表项干杯,但我不需要它。我想在 textview 的文本中设置。请看下面的代码。

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>

从列表视图中获取项目后,如何在 topic_display 布局中的 textview 文本中设置该列表项。

【问题讨论】:

    标签: android listview settext


    【解决方案1】:

    我的建议是将您想要显示的标题放在 Intent 的附加内容中。 这意味着,当你打电话时

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

    您应该在调用 startActivity() 方法之前将标题放在 Intent 的额外内容中(在这两种情况下,您都在调用 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"));
    

    希望这会有所帮助!

    【讨论】:

    • 它对我有用,非常感谢。我所做的唯一小修改是,我使用了 String selectedValue = String)getListAdapter().getItem(position);在 change() 方法之后,我在 putextra 中传递了字符串 selectedValue。如果我使用 topic_sections[position] 我会收到类似“topic_sections 无法解析为变量”的错误。无论如何 putExtra 的想法真的帮助了我。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多