listview中点击按钮响应事件怎么弄啊,为什么我这样写我的模拟器上什么也没显示啊?

未知明天 2017-05-09 01:02:41
public class MainActivity extends ListActivity {

private static final String TAG = "MainActivity";
private List<Map<String, Object>> mdata;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

mdata = data();
setListAdapter(new MyAdapter(this));
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
Log.i(TAG, (String)mdata.get(position).get("title"));

}

public class MyAdapter extends BaseAdapter{

private LayoutInflater minflater;

public MyAdapter(Context context) {
super();
this.minflater = LayoutInflater.from(context);
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return 0;
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

Hodler hodler =null;
if(convertView == null){
hodler = new Hodler();
convertView = minflater.inflate(R.layout.mylist1, null);
hodler.img = (ImageView) convertView.findViewById(R.id.img);
hodler.title = (TextView) convertView.findViewById(R.id.title);
hodler.info = (TextView) convertView.findViewById(R.id.info);
hodler.button = (Button) convertView.findViewById(R.id.button);
convertView.setTag(hodler);
}else{
hodler = (Hodler) convertView.getTag();
}
hodler.img.setBackgroundResource((Integer) mdata.get(position).get("img"));
hodler.title.setText((CharSequence) mdata.get(position).get("title"));
hodler.info.setText((CharSequence) mdata.get(position).get("info"));
hodler.button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
showdialog();
}
});return convertView;
}

}

public final class Hodler {
public ImageView img;
public TextView title;
public TextView info;
public Button button;
}

@SuppressLint("ShowToast")
public void showdialog() {
new AlertDialog.Builder(this).setTitle("提示信息").setMessage("你点击的第 " + data().toString() + " item")
.setPositiveButton("确定", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "确定", 1000).show();
setResult(RESULT_OK);
finish();
}
}).setNegativeButton("取消", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {

}
}).show();
}

public List<Map<String, Object>> data() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", "这是一个标题");
map.put("info", "这是一个信息");
map.put("img", R.drawable.dog10);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "这是一个标题");
map.put("info", "这是一个信息");
map.put("img", R.drawable.dog);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "这是一个标题");
map.put("info", "这是一个信息");
map.put("img", R.drawable.dog1);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "这是一个标题");
map.put("info", "这是一个信息");
map.put("img", R.drawable.dog2);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "这是一个标题");
map.put("info", "这是一个信息");
map.put("img", R.drawable.dog3);
list.add(map);
return list;
}

}


为什么我这样写我的模拟器上什么也没显示啊?
...全文
213 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
YXTS122 2017-05-11
  • 打赏
  • 举报
回复
帮楼主完善一下
public class MainActivity extends ListActivity  {
	private static final String TAG = "MainActivity";
	private List<Map<String, Object>> mdata;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//setContentView(R.layout.activity_main);
		ListView mListView=getListView();
		mdata = data();
		mListView.setAdapter(new MyAdapter(this,mdata));
		mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
	@Override
	public void onItemClick(AdapterView<?> l, View v, int position, long id) {
	Log.i(TAG, (String)mdata.get(position).get("title"));
	Toast.makeText(MainActivity.this, (String)mdata.get(position).get("title"), 1000).show();
	}
		});
	}

	class MyAdapter extends BaseAdapter{
    private Context context;
    Hodler hodler =null;
	private LayoutInflater minflater;
    private ArrayList<Map<String,Object>> datalist;
	public MyAdapter(Context context,List<Map<String,Object>> datalist) {
	    this.context=context;
		this.minflater = LayoutInflater.from(context);
		this.datalist=(ArrayList<Map<String,Object>>)datalist;
	}

	@Override
	public int getCount() {
	// TODO Auto-generated method stub
	return datalist.size();
	}

	@Override
	public Object getItem(int position) {
	// TODO Auto-generated method stub
	return datalist.get(position);
	}

	@Override
	public long getItemId(int position) {
	// TODO Auto-generated method stub
	return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
	final int positio=position;
	if(convertView == null){
	hodler = new Hodler();
	convertView= minflater.inflate(R.layout.mylist, null);
	hodler.img = (ImageView) convertView.findViewById(R.id.img);
	hodler.title = (TextView) convertView.findViewById(R.id.title);
	hodler.info = (TextView) convertView.findViewById(R.id.info);
	hodler.button = (Button) convertView.findViewById(R.id.button);
	//hodler.button.setTag(position);
	convertView.setTag(hodler);
	}else{
	hodler = (Hodler)convertView.getTag();
	}
	hodler.img.setBackgroundResource((Integer) mdata.get(position).get("img"));
	hodler.title.setText((CharSequence) mdata.get(position).get("title"));
	hodler.info.setText((CharSequence) mdata.get(position).get("info"));
	//hodler.button.setTag(position);
	//hodler.positio=position;
	hodler.button.setOnClickListener(new View.OnClickListener() {

	@Override
	public void onClick(View v) {
	//showdialog((int)hodler.button.getTag());	
		//showdialog(hodler.positio);
		showdialog(positio);
		
	}
	});
	return convertView;
	}
	class Hodler {
		public ImageView img;
		public TextView title;
		public TextView info;
		public Button button;
		//int positio;
		}
	}

	public void showdialog(int position) {
	new AlertDialog.Builder(this).setTitle("提示信息").setMessage("你点击的标题是:  " +(String)mdata.get(position).get("title"))
	.setPositiveButton("确定", new DialogInterface.OnClickListener(){

		@Override
		public void onClick(DialogInterface dialog, int which) {
		Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show();
		setResult(RESULT_OK);
		finish();
		}
     }).setNegativeButton("取消", new DialogInterface.OnClickListener() {

	@Override
	public void onClick(DialogInterface dialog, int which) {

	}
	}).show();
	}

	

	public List<Map<String, Object>> data() {
	List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
	Map<String, Object> map = new HashMap<String, Object>();
	map.put("title", "苹果");
	map.put("info", "apple");
	map.put("img", R.drawable.ic_launcher);	
	list.add(map);
	map = new HashMap<String, Object>();
	map.put("title", "书");
	map.put("info", "book");
	map.put("img", R.drawable.ic_launcher);
	list.add(map);
	map = new HashMap<String, Object>();
	map.put("title", "电脑");
	map.put("info", "computer");
	map.put("img", R.drawable.ic_launcher);
	list.add(map);
	map = new HashMap<String, Object>();
	map.put("title", "对话");
	map.put("info", "dialog");
	map.put("img", R.drawable.ic_launcher);
	list.add(map);
	map = new HashMap<String, Object>();
	map.put("title", "运行");
	map.put("info", "run");
	map.put("img", R.drawable.ic_launcher);
	list.add(map);
	return list;
	}
 }
  
未知明天 2017-05-10
  • 打赏
  • 举报
回复
哇 我自己写的和你的一模一样 还是什么也没有,检查了好多遍,一样 复制你的代码进去就出来了,,,好郁闷啊!!!!!崩溃
YXTS122 2017-05-10
  • 打赏
  • 举报
回复
你没把数据绑定到适配器上当然空白了
public class MainActivity extends ListActivity {
private static final String TAG = "MainActivity";
private List<Map<String, Object>> mdata;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
mdata = data();
setListAdapter(new MyAdapter(this,mdata));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
Log.i(TAG, (String)mdata.get(position).get("title"));

}

class MyAdapter extends BaseAdapter{
private Context context;
private LayoutInflater minflater;
private ArrayList<Map<String,Object>> datalist;
public MyAdapter(Context context,List<Map<String,Object>> datalist) {
this.context=context;
this.minflater = LayoutInflater.from(context);
this.datalist=(ArrayList<Map<String,Object>>)datalist;
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return datalist.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return datalist.get(position);
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

Hodler hodler =null;
if(convertView == null){
hodler = new Hodler();
convertView = minflater.inflate(R.layout.mylist, null);
hodler.img = (ImageView) convertView.findViewById(R.id.img);
hodler.title = (TextView) convertView.findViewById(R.id.title);
hodler.info = (TextView) convertView.findViewById(R.id.info);
hodler.button = (Button) convertView.findViewById(R.id.button);
convertView.setTag(hodler);
}else{
hodler = (Hodler) convertView.getTag();
}
hodler.img.setBackgroundResource((Integer) mdata.get(position).get("img"));
hodler.title.setText((CharSequence) mdata.get(position).get("title"));
hodler.info.setText((CharSequence) mdata.get(position).get("info"));
hodler.button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
showdialog();
}
});
return convertView;
}
class Hodler {
public ImageView img;
public TextView title;
public TextView info;
public Button button;
}

}

public void showdialog() {
new AlertDialog.Builder(this).setTitle("提示信息").setMessage("你点击的第 " + data().toString() + " item")
.setPositiveButton("确定", new DialogInterface.OnClickListener(){

@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "确定", 1000).show();
setResult(RESULT_OK);
finish();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {

}
}).show();
}


public List<Map<String, Object>> data() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", "这是一个标题");
map.put("info", "这是一个信息");
map.put("img", R.drawable.abc_ic_clear);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "这是一个标题");
map.put("info", "这是一个信息");
map.put("img", R.drawable.ic_launcher);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "这是一个标题");
map.put("info", "这是一个信息");
map.put("img", R.drawable.ic_launcher);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "这是一个标题");
map.put("info", "这是一个信息");
map.put("img", R.drawable.ic_launcher);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "这是一个标题");
map.put("info", "这是一个信息");
map.put("img", R.drawable.ic_launcher);
list.add(map);
return list;
}
}




敖森迪 2017-05-09
  • 打赏
  • 举报
回复
你在item里有Button控件,所以点击会被按钮抢先,导致每个条目不能点击。
敖森迪 2017-05-09
  • 打赏
  • 举报
回复
你在item里有Button控件,所以点击会被按钮抢先,导致每个条目不能点击。
YXTS122 2017-05-09
  • 打赏
  • 举报
回复
仔细调试看看有没有进入到onClick里啊!
  • 打赏
  • 举报
回复
首先你的xml中,listview id 应该是id=+id/list +id才是命名 而 id= id/list 是引用。 然后在你要在mainactivtyu 中 注册你的控件: mainactivity extend ......(){ private Listview mlv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mlv=(ListView)this.findviewbyid(R.id.list); ..... mlv.setonitemclickListener(........) } 这样才能点击listview中的item
未知明天 2017-05-09
  • 打赏
  • 举报
回复
可是我的模拟器是空白的,什么也没有,改了很多次 ,百度的也差不多,就是不知道问题在哪,模拟器空白,也没有报错
未知明天 2017-05-09
  • 打赏
  • 举报
回复
main布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@android:id/list" > </ListView> </RelativeLayout> mylist <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/img" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="15dp" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="30dp" android:textColor="#ff0033" android:textSize="20dp" /> <TextView android:id="@+id/info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="25dp" android:textColor="#88330033" android:textSize="10dp" /> </LinearLayout> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="5dp" android:text="more" /> </LinearLayout>

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧