listview下滑会报空指针

一席风月琳琅 2016-04-06 08:15:02
package jp.co.tre.pacer.shelfcheck;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import jp.co.tre.pacer.shelfcheck.R;
import jp.co.trejapan.pacer.android.activity.PacerMainActivity;
import jp.co.trejapan.pacer.android.ui.FooterAdapter;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;

public class NewShelfReferActivity extends PacerMainActivity {
private List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>(); // 声明列表容器
private HashMap<String, String> item1 = new HashMap<String, String>();
private ListAdapter dataAdapter;
private ListView listView;
private TextView title;
private int selectedPosition = 0;

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.shelf_refer);
titleLayout.setTitleText(getString(R.string.title_name));
pageinit();
listInit();
setFooterStyle();
}

public void pageinit() {
listView = (ListView) findViewById(R.id.mylist_refer);
title = (TextView) findViewById(R.id.title1);
Intent intent = getIntent();
String name = intent.getStringExtra("name");
title.setText(name);
for (int i = 0; i < 10; i++) {
HashMap<String, String> skt = new HashMap<String, String>();
skt.put("name", "lll" + i);
skt.put("id", "8101" + i);
list.add(skt);
}
}

public void listInit() {

dataAdapter = new ListAdapter(NewShelfReferActivity.this, list,
R.layout.list_shelf_refer, new String[] { "name", "id" },
new int[] { R.id.shelfname, R.id.shelfno }) {
class ViewHolder {
TextView sname;
TextView sno;
}

public View getView(final int position, View convertView,
ViewGroup parent) {
ViewHolder holder = null;
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.list_shelf_refer, null,
false);
holder = new ViewHolder();
holder.sname = (TextView) view.findViewById(R.id.shelfname);
holder.sno = (TextView) view.findViewById(R.id.shelfno);

} else {
holder = (ViewHolder) view.getTag();
}
HashMap<String, String> record = list.get(position);
holder.sname.setText(record.get("name"));
holder.sno.setText(record.get("id"));
dataAdapter.notifyDataSetChanged();
return view;
}

};

listView.setAdapter(dataAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
selectedPosition = arg2;
item1 = list.get(selectedPosition);
Intent intent = new Intent();
intent.setClass(NewShelfReferActivity.this,
NewShelfLoginActivity.class);
intent.putExtra("name", item1.get("name"));
intent.putExtra("id", item1.get("id"));
startActivity(intent);

}
});
}

// btn定义
private void setFooterStyle() {
String[] btnText = new String[4];
btnText[0] = getString(R.string.back);
btnText[1] = "";
btnText[2] = "";
btnText[3] = "";

OnClickListener[] listenner = new OnClickListener[4];
listenner[0] = new OnClickListener() {

@Override
public void onClick(View v) {
finish();
System.exit(0);
}
};

listenner[1] = new OnClickListener() {

@Override
public void onClick(View v) {
}
};
listenner[2] = null;
listenner[3] = new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

}

};
FooterAdapter adapter = new FooterAdapter(this, btnText, listenner);
footer.setAdapter(adapter);


}
}
...全文
107 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wanderer_hao 2016-11-02
  • 打赏
  • 举报
回复
在holder.sname.setText(record.get("name"));之前添加。
ESC尛蜜蜂 2016-04-06
  • 打赏
  • 举报
回复
楼上正解,添加位置如下

view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
GarryGallo 2016-04-06
  • 打赏
  • 举报
回复
缺少这一步:view.setTag(holder)。后面getTag出来是空的
一席风月琳琅 2016-04-06
  • 打赏
  • 举报
回复
holder.sname.setText(record.get("name")); 会在这报空指针

80,471

社区成员

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

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