android listview不运行getView

dengqiang2016 2013-07-19 09:45:28

package com.dengq.caigou;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.deng.service.DataNewsService;
import com.dengq.caigou.bean.DataField;
import com.dengq.main.R;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

public class CaigouActivity extends Activity {
ListView lstCaigou = null;
EditText edtFind;
List<HashMap<String, Object>> data = null;
//将数据加载到ArrayList数组里面,再在自定义适配器里面将数据加载进去
ArrayList<String> stdno = new ArrayList<String>();
ArrayList<String> nameList = new ArrayList<String>();
ArrayList<String> qgrList = new ArrayList<String>();
ArrayList<Integer> num = new ArrayList<Integer>();
String sSql = "select top 10 F_ZDBH,F_WareName ,F_Num,F_qgr from T_Caigou ";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_caigou);
lstCaigou = (ListView) findViewById(R.id.lstCaigou);
edtFind = (EditText) findViewById(R.id.edtFind);
Thread thread = new Thread(runnable);
thread.start();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.caigou, menu);
return true;
}

public void findRecord(View v) {
Thread thread = new Thread(runnable);
thread.start();
}

Runnable runnable = new Runnable() {
@Override
public void run() {
String sFind = edtFind.getText().toString();
if (sFind.equals("")) {
} else {
sSql = sSql + " where F_warename='" + sFind + "'";
}
//post提交数据然后获取json数据
getDataField(sSql);
Log.d("sql", sSql);
}
};

public void getDataField(String sSql) {
try {
//提交数据请求
List<DataField> dataFields = DataNewsService.postJSONLastNews(sSql,
"T_caigou");
data = new ArrayList<HashMap<String, Object>>();
for (DataField daField : dataFields) {
HashMap<String, Object> item = new HashMap<String, Object>();
item.put("stdNo", daField.getStdNo());
item.put("cName", daField.getFieldname());
item.put("num", daField.getfNum());
item.put("qgr", daField.getQgr());
data.add(item);
Log.d("test", data.toString());
stdno.add(daField.getStdNo());
nameList.add(daField.getFieldname());
num.add(daField.getfNum());
qgrList.add(daField.getQgr());
}
////////////错误主要在这里
//获取数据后加载适配器
ListAdapter listAdapter = new ListAdapter(CaigouActivity.this);
Log.d("test", "--000--");
lstCaigou.setAdapter(listAdapter);//有时加载到这里就不向下运行
Log.d("test", "---1111--");//getCoun返回值一般是10,每次返回两次
listAdapter.notifyDataSetChanged();
CaigouActivity.this.setContentView(lstCaigou);
//////////////////////////////////////////////////////////////////

} catch (Exception e) {
}
}

public final class ViewHolder {
public TextView stdNo;
public TextView name;
public TextView num;
public TextView qgr;
}

class ListAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private ViewHolder holder = null;

public ListAdapter(Context context) {
this.mInflater = LayoutInflater.from(context);
}

@Override
public int getCount() {
Log.d("testgetCount", String.valueOf(nameList.size()));
return nameList.size();
}

@Override
public Object getItem(int position) {
Log.d("testgetItem", String.valueOf(nameList.get(position)));
return nameList.get(position);
}

@Override
public long getItemId(int position) {
Log.d("getItemIdtest", String.valueOf(position));
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.d("test", "0001");
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.caigoulist, null);
holder.stdNo = (TextView) convertView.findViewById(R.id.stdNo);
holder.name = (TextView) convertView.findViewById(R.id.name);
holder.num = (TextView) convertView.findViewById(R.id.num);
holder.qgr = (TextView) convertView.findViewById(R.id.qgr);
convertView.setTag(holder);
Log.d("test", "0001-1");
} else {
holder = (ViewHolder) convertView.getTag();
}
//将ArrayList的数据加载到适配器里
Log.d("test", "0002");
final String s = (String) stdno.get(position);
holder.stdNo.setText(s);
final String s1 = (String) nameList.get(position);
holder.name.setText(s1);
final String s2 = (String) qgrList.get(position);
holder.qgr.setText(s2);
final Integer integer = (Integer) num.get(position);
holder.num.setText(integer);
Log.d("test", "0003");
return convertView;
}
}
}

public class DataField {
private String stdNo;
private String fieldname;
private int fNum;
private String qgr;
public DataField(String stdNo, String fieldname, int fNum, String qgr) {
super();
this.stdNo = stdNo;
this.fieldname = fieldname;
this.fNum = fNum;
this.qgr = qgr;
}

public String getQgr() {
return qgr;
}
public void setQgr(String qgr) {
this.qgr = qgr;
}
public String getStdNo() {
return stdNo;
}
public void setStdNo(String stdNo) {
this.stdNo = stdNo;
}
public String getFieldname() {
return fieldname;
}
public void setFieldname(String fieldname) {
this.fieldname = fieldname;
}
public int getfNum() {
return fNum;
}
public void setfNum(int fNum) {
this.fNum = fNum;
}

}
...全文
263 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pangxuntao 2015-05-13
  • 打赏
  • 举报
回复
@Override public Object getItem(int position) { Log.d("testgetItem", String.valueOf(nameList.get(position))); return nameList.get(position); } //return 有问题把 return position;
dengqiang2016 2013-09-11
  • 打赏
  • 举报
回复
最主要的是android4.0后访问网络不能再主线程里面,要程序开一个子线程,但是显示数据要在主线程里面处理。
迷px 2013-08-05
  • 打赏
  • 举报
回复
楼主解决没,能分享下不
dengqiang2016 2013-07-19
  • 打赏
  • 举报
回复
长度不为0的,android还不懂如何断点测试。java程序测试过了的。
  • 打赏
  • 举报
回复
眨一看,你的代码没问题。你断点下看看吧。看看你的namelist 是不是长度为0 . 还有就是看见你没notifyDataSetChanged()。 再有就是你注意下自己的逻辑顺序。 查下吧,应该就是这几点出问题了。
dengqiang2016 2013-07-19
  • 打赏
  • 举报
回复
引用 1 楼 kechanghe0705 的回复:
ListAdapter listAdapter = new ListAdapter(CaigouActivity.this); Log.d("test", "--000--"); lstCaigou.setAdapter(listAdapter);//有时加载到这里就不向下运行 Log.d("test", "---1111--");//getCoun返回值一般是10,每次返回两次 listAdapter.notifyDataSetChanged(); CaigouActivity.this.setContentView(lstCaigou); 把上面这句改下 CaigouActivity.this.setContentView(lstCaigou); ListAdapter listAdapter = new ListAdapter(CaigouActivity.this); Log.d("test", "--000--"); lstCaigou.setAdapter(listAdapter);//有时加载到这里就不向下运行 Log.d("test", "---1111--");//getCoun返回值一般是10,每次返回两次 listAdapter.notifyDataSetChanged();
试了一下不行的放到上面去界面就直接不能动了,这一句也不运行Log.d("test", "--000--"); 放到下面去运行到lstCaigou.setAdapter(listAdapter);,就不向下运行了。
j_f0001 2013-07-19
  • 打赏
  • 举报
回复
ListAdapter listAdapter = new ListAdapter(CaigouActivity.this); Log.d("test", "--000--"); lstCaigou.setAdapter(listAdapter);//有时加载到这里就不向下运行 Log.d("test", "---1111--");//getCoun返回值一般是10,每次返回两次 listAdapter.notifyDataSetChanged(); CaigouActivity.this.setContentView(lstCaigou); 把上面这句改下 CaigouActivity.this.setContentView(lstCaigou); ListAdapter listAdapter = new ListAdapter(CaigouActivity.this); Log.d("test", "--000--"); lstCaigou.setAdapter(listAdapter);//有时加载到这里就不向下运行 Log.d("test", "---1111--");//getCoun返回值一般是10,每次返回两次 listAdapter.notifyDataSetChanged();

80,350

社区成员

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

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