2014-10-01 44 views
-1

我有一個listview class.listview打開,用戶可以單擊任何listview項目。我想在xml上設置文本。我有像st1-st2-st3這樣的字符串。如果我點擊任何列表視圖項目,我怎麼能得到它打開xml和設置Textview1爲st1/@字符串?用意圖(字符串)更改TextView

我的listview像這樣工作;

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); 
    } 

    } 
} 
+0

'texts'是TextView的內部'ana'佈局或在不同的佈局? – 2014-10-01 19:46:52

+0

你的問題並不清楚。你想設置一個ListView項目的文本,或者在一個單獨的活動佈局? – cYrixmorten 2014-10-01 19:56:22

+0

沒有用戶會點擊一個列表視圖項目和列表視圖項目將發送一個字符串到任何textview.Textview將是一個XML。 – MacSTD 2014-10-01 19:57:30

回答

0

好吧,這有點讓人困惑,所以讓我這樣做。

如果你有這樣的

<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()調用,這可能會變得很沉重。

+0

首先感謝您的回答。我會在哪裏寫字符串? – MacSTD 2014-10-01 20:16:59

+0

@MacSTD檢查我的編輯。再次不確定我是否正在做你想做的事,但這是你如何根據你在列表中點擊的項目得到一個字符串。 – zgc7009 2014-10-01 20:21:01

+0

只是爲了澄清,你實際上並不想改變你的活動,當你點擊右鍵?只是你的TextView? – zgc7009 2014-10-01 20:23:39

0

如果我正確理解你,你想要打開一個新的活動並在該活動中顯示一個textview,以顯示取決於他們點擊的列表視圖項目的文本?

您可以將意圖額外添加到您用於啓動新活動的意圖中,並將要顯示的字符串放入其中,然後在新活動中獲取該額外內容,然後將文本視圖設置爲該活動。

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

然後在活動的OnCreate中調用

String str = getIntent.getStringExtra(stringkey); 

則只需設置的TextView該字符串