自定义 ArrayAdapter、listView、按钮
Custom ArrayAdapter, listView, button
我尝试捕捉 MainActivity 中按钮的点击,但这对我不起作用。
怎么做。
我把吐司放在我的 getView 中它似乎工作,但如何捕捉 MainActivity 中的点击。
@Override
public View getView(final int position, View convertView, ViewGroup parent){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.gestionmaps, parent, false);
textView = (TextView) rowView.findViewById(R.id.textView02);
btn2 = (Button) rowView.findViewById(R.id.spinner02);
btn = (Button) rowView.findViewById(R.id.del02);
textView.setText(values.get(position));
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "btn "+position, Toast.LENGTH_SHORT).show();
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "btn0 "+position, Toast.LENGTH_SHORT).show();
}
});
return rowView;
}
您的代码无效,因为当您单击 button1
和 button2
时,点击被 List Item
占用
解法:
@Override
public View getView(final int position, View convertView, ViewGroup parent){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.gestionmaps, parent, false);
textView = (TextView) rowView.findViewById(R.id.textView02);
btn2 = (Button) rowView.findViewById(R.id.spinner02);
btn = (Button) rowView.findViewById(R.id.del02);
textView.setText(values.get(position));
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "btn "+position, Toast.LENGTH_SHORT).show();
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "btn0 "+position, Toast.LENGTH_SHORT).show();
}
});
rootView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// put logs here to check if it is executed when you click outside button area
}
});
return rowView;
}
为了让您的按钮 onClick
在 YourActivity
中添加此 android:onClick
行到您的 Button
xml 文件。
list_item.xml
<Button
android:onClick="onClickButtonOne"
.../>
Activity.java
public void onClickButtonOne(View v) {
// button one onclick here.
int position = listview.getPositionForView(v);
}
我尝试捕捉 MainActivity 中按钮的点击,但这对我不起作用。 怎么做。 我把吐司放在我的 getView 中它似乎工作,但如何捕捉 MainActivity 中的点击。
@Override
public View getView(final int position, View convertView, ViewGroup parent){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.gestionmaps, parent, false);
textView = (TextView) rowView.findViewById(R.id.textView02);
btn2 = (Button) rowView.findViewById(R.id.spinner02);
btn = (Button) rowView.findViewById(R.id.del02);
textView.setText(values.get(position));
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "btn "+position, Toast.LENGTH_SHORT).show();
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "btn0 "+position, Toast.LENGTH_SHORT).show();
}
});
return rowView;
}
您的代码无效,因为当您单击 button1
和 button2
时,点击被 List Item
解法:
@Override
public View getView(final int position, View convertView, ViewGroup parent){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.gestionmaps, parent, false);
textView = (TextView) rowView.findViewById(R.id.textView02);
btn2 = (Button) rowView.findViewById(R.id.spinner02);
btn = (Button) rowView.findViewById(R.id.del02);
textView.setText(values.get(position));
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "btn "+position, Toast.LENGTH_SHORT).show();
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "btn0 "+position, Toast.LENGTH_SHORT).show();
}
});
rootView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// put logs here to check if it is executed when you click outside button area
}
});
return rowView;
}
为了让您的按钮 onClick
在 YourActivity
中添加此 android:onClick
行到您的 Button
xml 文件。
list_item.xml
<Button
android:onClick="onClickButtonOne"
.../>
Activity.java
public void onClickButtonOne(View v) {
// button one onclick here.
int position = listview.getPositionForView(v);
}