【问题标题】:Change TextView with Intent (String)使用 Intent(字符串)更改 TextView
【发布时间】:2014-10-01 19:43:35
【问题描述】:

我有一个 listview class.listview 打开,用户可以单击任何 listview 项目。我想在 xml 上设置文本。我有像 st1-st2-st3 这样的字符串。如果我单击任何列表视图项,我怎样才能让它打开 xml 并为 st1/@String 设置 Textview1 ?

我的列表视图是这样工作的;

public class strateji extends Activity {
private static final String LOG_TAG = "Alert Dialog Activity";
private ListView lv1;

  private TextView status;
 private String lv_arr[]={"listview1-list2-list3-list4-list5-list6-etc..."};

         /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ana);

        // Look up the AdView as a resource and load a request.

        Log.i(LOG_TAG, "Alert Dialog Activity Started");
        lv1=(ListView)findViewById(R.id.listView1);

        // By using setAdpater method in listview we an add string array in list.

        lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr));


        lv1.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

    if(position == 0)
    {

            setContentView(R.layout.texts); //--->opening texts.xml and setText
        status.setText(String);--------->>> like this i want send a string for TextView



    }
    if(position == 1)
    {
             Intent myIntent =  new Intent(strateji.this, mat2.class);
                 startActivityForResult(myIntent, 0);
    }

    }
}

【问题讨论】:

  • textsana 布局内的 TextView 还是单独的布局?
  • 你的问题不是很清楚。您想设置 ListView 项目的文本,还是在单独的 Activity 布局上?
  • 没有用户会点击列表视图项,列表视图项将向任何文本视图发送一个字符串。文本视图将是一个 xml。

标签: android string android-intent textview settext


【解决方案1】:

好的,这有点令人困惑,所以让我这样做吧。

如果你有这样的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:packpurchase="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/text_view_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="17sp"
        android:padding="15dp" />

    <View
        android:id="@+id/divider_one"
        android:layout_width="match_parent"
        android:layout_height="1dp" />

    <ListView
        android:id="@+id/list"
        android:layout_height="match_parent"
        android:layout_width="match_parent" 
        android:divider="@drawable/list_divider_inset"
        android:dividerHeight="1dp" >
    </ListView>

</LinearLayout>

在您的活动中,创建变量以引用您的视图和适配器:

private ListView lv;
private ArrayAdapter<String> mAdapter;
private TextView tv;

然后在 onCreate() 中调用 super.onCreate() 和 setContentView() 后,在获取引用时将适配器设置为 ListView

lv = (ListView) findViewById(android.R.id.list);
mAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr);
lv1.setAdapter(mAdapter);
tv = (TextView) findViewById(R.id.your_textview_id);

lv1.setOnItemClickListener(new OnitemClickListener(){

     @Override
     public void onItemClicked(...){
             // GET YOUR STRING
             String mString = mAdapter.getItem(position);

             // APPLY YOUR STRING TO YOUR TEXT_VIEW
             tv.setText(mString);  
     }
};

再一次,这解释得不好,我不确定它是否符合您的需要。这只是为了让您开始(或至少帮助我们更好地了解您的需求)。

请注意,您不必保留对适配器的引用,因为您可以调用

lv1.getAdapter().getItem(position);

我只是保留对它的引用,并且经常看到对适配器的引用。与TextView tv 相同。您不必保留引用,但是您可以,并且一旦获得该引用,您就可以进行空值检查,以避免执行许多可能会变得繁重的 findViewById() 调用。

【讨论】:

  • 首先感谢您的回答。我将在哪里写字符串?
  • @MacSTD 检查我的编辑。再次不确定我是否在做你想做的事,但这就是你如何根据你在列表中单击的项目获得一个字符串。
  • 澄清一下,当您单击右键时,您实际上并不想更改您的活动?只是你的 TextView?
  • 我是打开一个新活动还是在 position = 0 处写下来?
  • @MacSTD 检查我编辑的答案。不要认为你需要开始新的活动。还是有新活动的原因?
【解决方案2】:

如果我对您的理解正确,您希望打开一个新活动并在该活动中使用一个文本视图来显示取决于他们单击的列表视图项的文本?

您可以在用于启动新活动的意图中添加一个额外的意图,并将您想要显示的字符串放入其中,然后在新活动中获取该额外内容,然后为其设置文本视图。

Intent i = new Intent(activity1, activity2);
i.putExtra(stringkey, stringvalue);

然后在您调用的活动的 oncreate 中

String str = getIntent.getStringExtra(stringkey);

然后只需将 textview 设置为该字符串

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多