Android ListView单击对话框子项的侦听器

Android ListView单击对话框子项的侦听器,android,listview,android-listview,Android,Listview,Android Listview,我有一个带有ListView的对话框。ListView项中有两个textview。我想在ListView的click listener上获取这两个textview中的文本。可能吗?我尝试了下面的代码段,但它只给出了第一个textview项。我想在单击任何ListView项时也关闭该对话框 代码: lv.setOnItemClickListener(新的OnItemClickListener(){ 公共无效MClick(AdapterView父级、, 视图、整型位置、长id){ 对象项=lv.ge

我有一个带有ListView的对话框。ListView项中有两个textview。我想在ListView的click listener上获取这两个textview中的文本。可能吗?我尝试了下面的代码段,但它只给出了第一个textview项。我想在单击任何ListView项时也关闭该对话框

代码:

lv.setOnItemClickListener(新的OnItemClickListener(){
公共无效MClick(AdapterView父级、,
视图、整型位置、长id){
对象项=lv.getAdapter().getItem(位置);
Toast.makeText(getApplicationContext(),
item.toString(),Toast.LENGTH_SHORT).show();
改变成分;
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;

};
公共类CustomListAdapterDialog扩展了ArrayAdapter{
私人最终活动背景;
私有最终字符串[]名称;
私人最终双[]价格;
专用最终字体tf、tfb;
对话改变成分;
公共CustomListAdapterDialog(活动上下文、字符串[]名称数组、双[]价格数组、字体tf、字体tfb、对话框更改成分)
{
super(上下文,R.layout.dialog\u列表项,NameArray);
this.context=context;
this.Name=NameArray;
Price=PriceArray;
这个.tf=tf;
这个.tfb=tfb;
这个.changeComponent=changeComponent;
}
公共视图getView(内部位置、视图视图、视图组父视图)
{
LayoutInflater充气器=上下文。getLayoutInflater();
视图行视图=充气机。充气(R.layout.dialog\u listitem,null,true);
final TextView txtName=(TextView)rowView.findViewById(R.id.txt_IngredientName);
final TextView txtPrice=(TextView)rowView.findViewById(R.id.txt\u IngredientPrice);
setText(名称[位置]);
txtName.setTypeface(tf);
txtPrice.setTypeface(tf);
String priceValue=String.valueOf(价格[位置]);
txtPrice.setText(“$”+价格值);
/*setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v)
{
Toast.makeText(context,txtName.getText(),Toast.LENGTH_SHORT.show();
Toast.makeText(context,txtPrice.getText(),Toast.LENGTH_SHORT.show();
改变成分;
}
});
*/
返回行视图;
};

}

使用
查看
方法的第二个参数来访问两个文本视图值,如下所示:

 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();
         }});
public void onItemClick(AdapterView父视图、视图视图、整型位置、长id)
{
TextView txtViewOne=(TextView)view.findViewById(R.id.TextView\u one);
TextView txtViewTwo=(TextView)view.findViewById(R.id.TextView_-two);
字符串strTxtOne=txtViewOne.getText().toString();
}});

能否显示适配器和数据对象?您可能必须将项强制转换为数据对象,该对象应包含所有数据,包括文本。我尝试在适配器类中将“单击”分配给这两个项。这是可行的。但我需要在listview的“单击侦听器”中获取此项,因为我想获取用户选择的项。我知道,所以请显示适配器和数据对象。
 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();
         }});