Dialog 子项的 ListView ClickListener
ListView ClickListener for Dialog subitem
我有一个对话框 ListView.There 列表视图中有两个文本视图 item.I 想在列表视图的单击中获取两个文本视图中的文本 listener.Is 可能吗?我尝试了以下方法代码片段,但它给出了第一个文本视图项目 only.I 也想关闭单击任何列表视图项目时的对话框。
代码:
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());
}
});
这是我的适配器class:
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;
};
}
使用 view
方法的第二个参数 onItemClick
来访问两个 TextView 值:
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();
}});
我有一个对话框 ListView.There 列表视图中有两个文本视图 item.I 想在列表视图的单击中获取两个文本视图中的文本 listener.Is 可能吗?我尝试了以下方法代码片段,但它给出了第一个文本视图项目 only.I 也想关闭单击任何列表视图项目时的对话框。
代码:
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());
}
});
这是我的适配器class:
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;
};
}
使用 view
方法的第二个参数 onItemClick
来访问两个 TextView 值:
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();
}});