使用此代码,我可以在android中显示Listview:
listView = (ListView) layout.findViewById(R.id.listView1);
Notifcationadapter adapter = new Notifcationadapter(this, notifies);
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);
public class Notifcationadapter extends BaseAdapter {
private static ArrayList<Notify> values;
Context context;
// List<RowItem> rowItems;
ViewHolder holder = null;
LinearLayout linear2;
DataBaseManager dbManager = new DataBaseManager(context);
ArrayList<Notify> notifies;
public Notifcationadapter(Context context, ArrayList<Notify> notifies) {
super();
this.context = context;
this.notifies = notifies;
}
/* private view holder class */
private class ViewHolder {
TextView txtTitle;
TextView txtDesc;
ImageView yesimage;
ImageView runningimage;
ImageView noimage;
TextView revresetime;
TextView rejected;
LinearLayout linear2;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.notifcationlistitem, null);
holder = new ViewHolder();
holder.linear2 = (LinearLayout) convertView
.findViewById(R.id.linear2);
holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
holder.txtTitle = (TextView) convertView.findViewById(R.id.title);
holder.yesimage = (ImageView) convertView
.findViewById(R.id.imageView1);
holder.noimage = (ImageView) convertView
.findViewById(R.id.imageView2);
holder.revresetime = (TextView) convertView
.findViewById(R.id.revresetime);
holder.rejected = (TextView) convertView
.findViewById(R.id.rejectedrequest);
holder.runningimage = (ImageView) convertView
.findViewById(R.id.runnimage);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// holder.txtTitle.setText("Title");
String statustype = notifies.get(position).getNotificationType();
if (statustype.equals("1")) {
holder.txtDesc.setText(notifies.get(position)
.getNotificationDescrpiton());
holder.revresetime.setText(Functions
.setLastSeenNotifcationTime(notifies.get(position)
.getNotificationDatetime()));
holder.txtTitle.setText("Request For travelling");
holder.yesimage.setVisibility(View.VISIBLE);
holder.noimage.setVisibility(View.VISIBLE);
holder.yesimage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(context, "Yes", 10000).show();
holder.yesimage.setVisibility(View.GONE);
holder.noimage.setVisibility(View.GONE);
// holder.linear2.setVisibility(View.INVISIBLE);
holder.runningimage.setVisibility(View.VISIBLE);
}
});
holder.noimage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "NO", 10000).show();
// holder.linear2.setVisibility(View.INVISIBLE);
holder.yesimage.setVisibility(View.GONE);
holder.noimage.setVisibility(View.GONE);
holder.rejected.setVisibility(View.VISIBLE);
}
});
}
else {
holder.txtDesc.setText(notifies.get(position)
.getNotificationDescrpiton());
holder.txtTitle.setText("Post");
holder.revresetime.setText(Functions
.setLastSeenNotifcationTime(notifies.get(position)
.getNotificationDatetime()));
holder.yesimage.setVisibility(View.GONE);
holder.noimage.setVisibility(View.GONE);
}
if (position % 2 == 0) {
convertView.setBackgroundColor(Color.parseColor("#ffffff"));
}
else {
convertView.setBackgroundColor(Color.parseColor("#f5f6f1"));
}
return convertView;
}
@Override
public int getCount() {
return notifies.size();
}
@Override
public Object getItem(int position) {
return notifies.get(position).getNotificationType();
}
@Override
public long getItemId(int position) {
return position;
}
}
这是我的适配器类我的Listview Print像这样
我已经应用了yes而不是按钮点击功能但是当我点击第一项是按钮比项目第二项数据看不清我怎么知道为什么会这样。我希望当我点击是( - /)然后是和否图像按钮应该隐藏应该有文本视图可见它发生但它不是每个项目当我点击第一然后它消失第二或第四项这样请检查我适配器哪里出错了。
答案 0 :(得分:0)
我建议你在按钮上设置android(是和否按钮)布局:
onclick="yesHandle"
并且
onclick="noHandle"
然后在你的活动中,创建两个方法:
public void yesHandle(View v){
final int positionRow = listView.getPositionForView((View) v.getParent());
//TODO rest
adapter.notifyDataSetChanged();
}
public void noHandle(View v){
final int positionRow = listView.getPositionForView((View) v.getParent());
//TODO rest
adapter.notifyDataSetChanged();
}