android 中的自定义Adapter中的getView方法不执行 怎么个不执行法?有什么日志输出或log日志不?这问的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有显示 list中也有值 就是不显示出来public View getView(int position, View convertView, ViewGroup viewGroup) { inflater = LayoutInflater.from(context); if (convertView == null) { convertView = inflater.inflate(R.layout.myorder_listview, null); // 简介菜单的菜名 TextView txt_mealName = (TextView) convertView .findViewById(R.id.txt_mealname); System.out.println("gmajjjkkkklg" + nameAndprice.get(position).getName()); txt_mealName.setText(nameAndprice.get(position).getName()); // 简介菜单的删除按钮 iv_delete = (ImageButton) convertView .findViewById(R.id.ibtn_delete); }} 要首先调用super.getView(....),再重载 package com.teego.adapter;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map.Entry;import com.teego.activity.PictureViewActivity;import com.teego.activity.R;import com.teego.db.DBHelperColumn;import com.teego.db.DataBaseHelper;import com.teego.db.SqliteHelperUtil;import com.teego.entity.Vegetable;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageButton;import android.widget.LinearLayout;import android.widget.TextView;/** * @author wangtao * * 简介菜单的Adapter * */public class PictureViewConciseMyOrderAdapter extends BaseAdapter { private Context context; private LinearLayout linearLayout; private LayoutInflater inflater; private List<Vegetable> nameAndprice = new ArrayList<Vegetable>(); private Vegetable vv; private SqliteHelperUtil db; private ImageButton iv_delete; private TextView txt_mealName; private Vegetable vt = new Vegetable(); private LayoutInflater layoutInflater; private static PictureViewConciseMyOrderAdapter instance = null; private PictureViewActivity pv=new PictureViewActivity(); public Handler handler = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); Bundle b = msg.getData(); Vegetable vv = new Vegetable(); vv.setName(b.getString("mealname")); vv.setPrice(b.getInt("mealprice")); vv.setId(b.getInt("id")); Log.i("bundle里面的数据11111", b.get("mealname") + ""); Log.i("mealname的数据111111", b.getInt("mealprice") + ""); Log.i("mealprice的数据11111", b.getInt("id") + ""); addMealName(vv); notifyDataSetChanged(); }; }; public PictureViewConciseMyOrderAdapter() { } public PictureViewConciseMyOrderAdapter(Context context) { this.context = context; layoutInflater = (LayoutInflater) this.context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public static PictureViewConciseMyOrderAdapter getInstance() { if (instance == null) { instance = new PictureViewConciseMyOrderAdapter(); } return instance; } @Override public int getCount() { return nameAndprice.size(); } @Override public Object getItem(int position) { return nameAndprice.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup viewGroup) { linearLayout = (LinearLayout) layoutInflater.inflate( R.layout.myorder_listview, null); // inflater = LayoutInflater.from(context); // if (convertView == null) { // convertView = inflater.inflate(R.layout.myorder_listview, null); // 简介菜单的菜名 txt_mealName = (TextView) linearLayout.findViewById(R.id.txt_mealname); // 简介菜单的删除按钮 iv_delete = (ImageButton) linearLayout.findViewById(R.id.ibtn_delete); // } vt = nameAndprice.get(position); System.out.println("gmajjjkkkklg" + nameAndprice.get(position).getName()); txt_mealName.setText(vt.getName()); iv_delete.setTag(position); Log.i("tag:Position", position + ""); iv_delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { int tag = (Integer) view.getTag(); // vv=new Vegetable(); vv = nameAndprice.get(tag); nameAndprice.remove(nameAndprice.get(tag)); notifyDataSetChanged(); System.out.println("临时数据库中ID " + vv.getId()); db = new SqliteHelperUtil(context); db.deleteDataFromTable(vv.getId());// 从数据库中删除临时表中的数据 db.close(); } }); return linearLayout; } // 删除菜名 public void deleteMealItem(int index) { nameAndprice.remove(index); notifyDataSetChanged(); } public void addMealName(Vegetable vt_name) { vv = new Vegetable(); vv.setName(vt_name.getName()); vv.setPrice(vt_name.getPrice()); vv.setId(vt_name.getId()); nameAndprice.add(vv); Log.i("name111", vt_name.getName()); Log.i("name111", vt_name.getPrice() + ""); Log.i("name111", nameAndprice.size() + ""); this.notifyDataSetChanged(); System.out.println("getCount()"+getCount()); }}addMealName(Vegetable vt_name)这个方法数据都可以加载进来 就是数据没有显示出来效果 OnCreate()里面的listView加载的数据 conciseorder_listview = (ListView) findViewById(R.id.myorder_listview); concise_MyOrderAdapter = new PictureViewConciseMyOrderAdapter(this);// concise_MyOrderAdapter.notifyDataSetChanged(); conciseorder_listview.setAdapter(concise_MyOrderAdapter); 看了十分钟,太累了。代码的可读性可想而知。看了好久没有看明白你的handler是干什么的?没有发送请求的情况下它不会执行啊。大体看明白你的思路,就是handler接收数据,然后addMealName()这样nameAndprice这个list中就有数据了。是这样吗?但是我看不明白的是handler中的msg是怎么来的?? 是这个意思 !!在Activity中造几条假数据可以加载到listview中 , 这样做为什么不可以呢?? 是这个意思 !!在Activity中造几条假数据可以加载到listview中 , 这样做为什么不可以呢?? 那你须要在设置adapter之前加入数据,如果说没有view的话那肯定没有view 如果说没有view的话你肯定是设置了adapter后再增加的数据。这只是我的猜测...... listView在开始绘制的时候,系统首先调用getCount()函数,根据他的返回值得到 listView的长度,然后根据这个长度,调用getView()逐一绘制每一行。如果你的 getCount()返回值是0的话,列表将不显示同样return 1,就只显示一行。系统显示列表时,首先实例化一个适配器(这里将实例化自定义的适配器)。当手动完成适配时,必须手动映射数据,这需要重写getView()方 法。系统在绘制列表的每一行的时候将调用此方法。getView()有三个参数,position表示将显示的是第几行,covertView是从布局文 件中inflate来的布局。我们用LayoutInflater的方法将定义好的item.xml文件提取成View实例用来显示。然后将xml文件中 的各个组件实例化(简单的findViewById()方法)。这样便可以将数据对应到各个组件上了。但是按钮为了响应点击事件,需要为它添加点击监听 器,这样就能捕获点击事件。至此一个自定义的listView就完成了,现在让我们回过头从新审视这个过程。系统要绘制ListView了,他首先获得要 绘制的这个列表的长度,然后开始绘制第一行,怎么绘制呢?调用getView()函数。在这个函数里面首先获得一个View(实际上是一个 ViewGroup),然后再实例并设置各个组件,显示之。好了,绘制完这一行了。那再绘制下一行,直到绘完为止。估计你getCount()返回值是0 我的gridview也遇到这种问题,真心感觉很无语!,变态 看看布局的问题,重点看看gridview 遇到同样的问题,getCount()得到的数据是3,但getView方法没执行 ListView控件本身在xml中设置了gone,getView也不会执行 如何设置webview使用自定义封装字体 service 的 onstart 和 oncreate什么时候被调用? handler怎么传数据? android项目中原来用API 7写的,想用API 8的函数怎么办 急,怎么定制AlertDialog Android background问题 求帮助 Android模拟器的IP地址 自定义的radiobutton文字怎样在左边 怎样用Comparator比较文件的大小 android 根据进程名杀死进程 WCDMA的Google基站定位问题 关于ffmpeg移植到android遇到的问题
public View getView(int position, View convertView, ViewGroup viewGroup) {
inflater = LayoutInflater.from(context);
if (convertView == null) {
convertView = inflater.inflate(R.layout.myorder_listview, null);
// 简介菜单的菜名 TextView txt_mealName = (TextView) convertView
.findViewById(R.id.txt_mealname); System.out.println("gmajjjkkkklg"
+ nameAndprice.get(position).getName());
txt_mealName.setText(nameAndprice.get(position).getName()); // 简介菜单的删除按钮
iv_delete = (ImageButton) convertView
.findViewById(R.id.ibtn_delete); }}
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;import com.teego.activity.PictureViewActivity;
import com.teego.activity.R;
import com.teego.db.DBHelperColumn;
import com.teego.db.DataBaseHelper;
import com.teego.db.SqliteHelperUtil;
import com.teego.entity.Vegetable;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;/**
* @author wangtao
*
* 简介菜单的Adapter
*
*/
public class PictureViewConciseMyOrderAdapter extends BaseAdapter {
private Context context;
private LinearLayout linearLayout;
private LayoutInflater inflater;
private List<Vegetable> nameAndprice = new ArrayList<Vegetable>();
private Vegetable vv;
private SqliteHelperUtil db;
private ImageButton iv_delete;
private TextView txt_mealName;
private Vegetable vt = new Vegetable();
private LayoutInflater layoutInflater;
private static PictureViewConciseMyOrderAdapter instance = null;
private PictureViewActivity pv=new PictureViewActivity(); public Handler handler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
Bundle b = msg.getData();
Vegetable vv = new Vegetable(); vv.setName(b.getString("mealname"));
vv.setPrice(b.getInt("mealprice"));
vv.setId(b.getInt("id")); Log.i("bundle里面的数据11111", b.get("mealname") + ""); Log.i("mealname的数据111111", b.getInt("mealprice") + ""); Log.i("mealprice的数据11111", b.getInt("id") + ""); addMealName(vv);
notifyDataSetChanged();
};
}; public PictureViewConciseMyOrderAdapter() {
} public PictureViewConciseMyOrderAdapter(Context context) {
this.context = context;
layoutInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} public static PictureViewConciseMyOrderAdapter getInstance() {
if (instance == null) {
instance = new PictureViewConciseMyOrderAdapter(); }
return instance; } @Override
public int getCount() {
return nameAndprice.size();
} @Override
public Object getItem(int position) {
return nameAndprice.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
linearLayout = (LinearLayout) layoutInflater.inflate(
R.layout.myorder_listview, null); // inflater = LayoutInflater.from(context);
// if (convertView == null) {
// convertView = inflater.inflate(R.layout.myorder_listview, null); // 简介菜单的菜名 txt_mealName = (TextView) linearLayout.findViewById(R.id.txt_mealname); // 简介菜单的删除按钮
iv_delete = (ImageButton) linearLayout.findViewById(R.id.ibtn_delete); // }
vt = nameAndprice.get(position);
System.out.println("gmajjjkkkklg"
+ nameAndprice.get(position).getName());
txt_mealName.setText(vt.getName()); iv_delete.setTag(position);
Log.i("tag:Position", position + ""); iv_delete.setOnClickListener(new OnClickListener() { @Override
public void onClick(View view) { int tag = (Integer) view.getTag();
// vv=new Vegetable();
vv = nameAndprice.get(tag);
nameAndprice.remove(nameAndprice.get(tag));
notifyDataSetChanged();
System.out.println("临时数据库中ID " + vv.getId()); db = new SqliteHelperUtil(context);
db.deleteDataFromTable(vv.getId());// 从数据库中删除临时表中的数据
db.close();
}
}); return linearLayout;
} // 删除菜名
public void deleteMealItem(int index) {
nameAndprice.remove(index);
notifyDataSetChanged();
} public void addMealName(Vegetable vt_name) {
vv = new Vegetable();
vv.setName(vt_name.getName());
vv.setPrice(vt_name.getPrice());
vv.setId(vt_name.getId());
nameAndprice.add(vv); Log.i("name111", vt_name.getName());
Log.i("name111", vt_name.getPrice() + "");
Log.i("name111", nameAndprice.size() + ""); this.notifyDataSetChanged();
System.out.println("getCount()"+getCount());
}}
addMealName(Vegetable vt_name)这个方法数据都可以加载进来 就是数据没有显示出来效果
conciseorder_listview = (ListView) findViewById(R.id.myorder_listview);
concise_MyOrderAdapter = new PictureViewConciseMyOrderAdapter(this);
// concise_MyOrderAdapter.notifyDataSetChanged();
conciseorder_listview.setAdapter(concise_MyOrderAdapter);
估计你getCount()返回值是0