Java 带有按钮单击事件的自定义列表视图
我想把点击事件添加到自定义列表视图中的两个按钮中。我的自定义列表视图扩展了基本适配器。我不知道怎么写。请帮帮我。 这是我的适配器代码:我也读了一些其他帖子,但它们对我不起作用Java 带有按钮单击事件的自定义列表视图,java,android,custom-lists,Java,Android,Custom Lists,我想把点击事件添加到自定义列表视图中的两个按钮中。我的自定义列表视图扩展了基本适配器。我不知道怎么写。请帮帮我。 这是我的适配器代码:我也读了一些其他帖子,但它们对我不起作用 import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import android.app
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.Image;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class CustomAdapter extends BaseAdapter {
private Activity activity;
private ArrayList data;
private static LayoutInflater inflater=null;
public Resources res;
ListModel getList = null;
int i=0;
public CustomAdapter(Activity a, ArrayList data,Resources resLocal) {
activity = a;
this.data = data;
res = resLocal;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
if(data.size() <= 0)
return 1;
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public static class ViewHolder{
public TextView txt_Name;
public TextView txt_Status;
public ImageButton imgbtn_senka;
public ImageButton imgbtn_fuenka;
public TableRow tblrow_status;
//public TableRow tblrow_btn;
public RelativeLayout layoutbtn;
public ImageView image;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
ViewHolder holder;
if(convertView==null){
//Inflate tabitem.xml file for each row
vi = inflater.inflate(R.layout.tabitem, null);
holder=new ViewHolder();
holder.txt_Name = (TextView)vi.findViewById(R.id.txtmemberName);
holder.txt_Status = (TextView)vi.findViewById(R.id.txtmemberStatus);
holder.image = (ImageView)vi.findViewById(R.id.imgPlayer);
holder.imgbtn_fuenka = (ImageButton) vi.findViewById(R.id.btnfusenka);
holder.imgbtn_senka = (ImageButton) vi.findViewById(R.id.btnsenka);
holder.tblrow_status = (TableRow)vi.findViewById(R.id.tblrowstatus);
holder.layoutbtn = (RelativeLayout)vi.findViewById(R.id.layoutbutton);
vi.setTag(holder);
}
else
holder=(ViewHolder)vi.getTag();
if(data.size() <= 0){
holder.txt_Name.setText("No Data");
}
else{
getList = null;
getList = (ListModel) data.get(position);
if(getList.getMemberStatus() == 3){
holder.tblrow_status.setVisibility(View.INVISIBLE);
holder.layoutbtn.setVisibility(View.VISIBLE);
if(getList.getEntry() == 0){
Log.i("abc", getList.getEntry()+"");
//holder.imgbtn_fuenka.setImageResource(res.getIdentifier("com.androidexample.customlistview:drawable/senka.png",null,null));
holder.imgbtn_senka.setImageResource(R.drawable.fusanka);
holder.imgbtn_senka.setEnabled(false);
}
}
else{
holder.tblrow_status.setVisibility(View.VISIBLE);
holder.layoutbtn.setVisibility(View.INVISIBLE);
if(getList.getEntry() == 0){
holder.txt_Status.setText("未確認");
}
else if(getList.getEntry() == 1){
holder.txt_Status.setText("参加");
}
else if(getList.getEntry() == 2){
holder.txt_Status.setText("不参加");
}
else if(getList.getEntry() == 3){
holder.txt_Status.setText("取消");
}
}
holder.txt_Name.setText(getList.getMemberName());
String url="http://10.0.2.2/football365/Photo/"+getList.getImage();
try {
Bitmap bitmap= BitmapFactory.decodeStream((InputStream) new URL(url).getContent());
holder.image.setImageBitmap(bitmap);
}
catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// holder.image.setImageResource(res.getIdentifier("http://10.0.2.2/football365/Photo/"+getList.getImage(),null,null));
}
return vi;
}
}
使用以下代码:
if(convertView==null){
//Inflate tabitem.xml file for each row
vi = inflater.inflate(R.layout.tabitem, null);
holder=new ViewHolder();
holder.txt_Name = (TextView)vi.findViewById(R.id.txtmemberName);
holder.txt_Status = (TextView)vi.findViewById(R.id.txtmemberStatus);
holder.image = (ImageView)vi.findViewById(R.id.imgPlayer);
holder.imgbtn_fuenka = (ImageButton) vi.findViewById(R.id.btnfusenka);
holder.imgbtn_senka = (ImageButton) vi.findViewById(R.id.btnsenka);
holder.tblrow_status = (TableRow)vi.findViewById(R.id.tblrowstatus);
holder.layoutbtn = (RelativeLayout)vi.findViewById(R.id.layoutbutton);
// add this line
holder.imgbtn_fuenka.setOnClickListener(this);
holder.imgbtn_senka.setOnClickListener(this);
// do for how many object that you want
vi.setTag(holder);
}
在onClick方法中:
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.btnfusenka:
break;
case R.id.btnsenka:
break;
}
您必须导入以下行
import View.OnClickListener
在返回CustomAdapter的getView之前添加它
在getview中使用此代码
在列表视图中使用此属性
android:descendantFocusability="afterDescendants"
您只需遵循以下步骤: 1.在getView函数中编写view.onClickListener 假设它是一个按钮,那么就写吧
holder.BUTTON_NAME.setON(new View.onClickListener)
@Override
public void onClick(View v) {
// Do your imgbtn_senka buttons stuff
}
});
询问代码的问题必须证明对正在解决的问题的最低理解。包括尝试过的解决方案、它们不起作用的原因以及预期结果。因此,请提供更多信息..类型视图中的方法setOnClickListenerView.OnClickListener不适用于参数CustomAdapter。这就是在CustomAdapter类中实现OnClickListener时显示的错误?必须导入以下行,导入视图。OnClickListener我已经尝试过这个。不工作。谢谢你的关心。真的,你能发布代码吗
android:descendantFocusability="afterDescendants"
holder.BUTTON_NAME.setON(new View.onClickListener)
@Override
public void onClick(View v) {
// Do your imgbtn_senka buttons stuff
}
});