2015-04-16 34 views
0

我有一個ListView對話框。在listview item中有兩個textview。我想在listview的click listener的textview中獲得文本。是否有可能?我嘗試了下面的代碼片段,但是它只給出第一個textview項目。我想要在點擊任何listview項目時關閉對話框。ListView ClickListener for Dialog subitem

代碼:

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

         Object item = lv.getAdapter().getItem(position); 

         Toast.makeText(getApplicationContext(), 
           item.toString(), Toast.LENGTH_SHORT).show(); 
         changeIngredient.dismiss(); 

         ParameterName.setText(item.toString()); 


        } 
       }); 

這是我的適配器類:

public class CustomListAdapterDialog extends ArrayAdapter<String> { 

private final Activity context; 
private final String[] Name; 
private final Double[] Price; 
private final Typeface tf,tfb; 
Dialog changeIngredient; 

public CustomListAdapterDialog(Activity context, String[] NameArray,Double[] PriceArray, Typeface tf, Typeface tfb, Dialog changeIngredient) 
{ 
    super(context, R.layout.dialog_listitem,NameArray); 

    this.context=context; 
    this.Name=NameArray; 
    this.Price=PriceArray; 
    this.tf=tf; 
    this.tfb=tfb; 
    this.changeIngredient=changeIngredient; 
} 

public View getView(int position,View view,ViewGroup parent) 
{ 
    LayoutInflater inflater=context.getLayoutInflater(); 
    View rowView=inflater.inflate(R.layout.dialog_listitem, null,true); 


    final TextView txtName = (TextView) rowView.findViewById(R.id.txt_IngredientName); 
    final TextView txtPrice = (TextView) rowView.findViewById(R.id.txt_IngredientPrice); 


    txtName.setText(Name[position]); 
    txtName.setTypeface(tf); 
    txtPrice.setTypeface(tf); 
    String priceValue = String.valueOf(Price[position]); 
    txtPrice.setText("$"+priceValue); 

    /*txtName.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 
      Toast.makeText(context, txtName.getText(), Toast.LENGTH_SHORT).show(); 
      Toast.makeText(context, txtPrice.getText(), Toast.LENGTH_SHORT).show(); 
      changeIngredient.dismiss(); 
     } 
    }); 
*/ 
    return rowView; 

}; 

} onItemClick方法的訪問都TextView的值

+0

你可以顯示適配器和你的數據對象嗎?您可能必須將項目投射到您的數據對象,該數據對象應該包含所有數據,包括文本。 – ElDuderino

+0

我試圖將點擊分配到適配器class.Its工作。但我需要得到這在listview的clicklistener本身,因爲我想獲得用戶選擇的項目。 – Jas

+0

我知道,所以顯示你的適配器和你的數據對象。 – ElDuderino

回答

0

使用view秒參數:

public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
     { 
      TextView txtViewOne = (TextView)view.findViewById(R.id.textview_one); 
      TextView txtViewTwo = (TextView)view.findViewById(R.id.textview_two); 
      String strTxtOne=txtViewOne.getText().toString(); 
     }}); 
+0

很棒的答案:)感謝:) :) – Jas