看着网上的教程自己写了一个自定的Adapter,之后我的数据显示就一直有问题 本来是 一个名字 一个价格 一个介绍的 现在变成 三个名字 三个价格 三个介绍了,也不知道是哪里的问题 求解
代码
public class MyAdapter extends BaseAdapter{
private LayoutInflater layoutInflater;
private List<String> list;
public List<TextView> txtList = new ArrayList<TextView>(); public MyAdapter(Context context, List<String> list) {
this.layoutInflater = LayoutInflater.from(context);
this.list = list;
} @Override
public int getCount() {
if(list == null){
return 0;
}
return list.size();
} @Override
public Object getItem(int position) {
return this.list.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = layoutInflater.inflate(R.layout.listview, null);
} TextView ScenicSpots_name = (TextView) convertView.findViewById(R.id.ScenicSpots_name);
TextView S_price =(TextView) convertView.findViewById(R.id.S_price);
TextView S_introduction =(TextView) convertView.findViewById(R.id.S_introduction);
ScenicSpots_name.setText(list.get(position));
S_price.setText(list.get(position));
S_introduction.setText(list.get(position)); //Activity中要获取数量的list
txtList.add(ScenicSpots_name);
txtList.add(S_price);
txtList.add(S_introduction);
return convertView;
}}这个是MyAdapter类
下面这个是使用MyAdapter的
package mars.Travel;import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import mars.Travel.DataBaseService;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ListView;
public class Play extends Activity {
private MyAdapter adapter = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO 自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.play);
ListView mListView = (ListView) findViewById(R.id.Sport_listView);
adapter = setAdapterData();
mListView.setAdapter(adapter);
}
private MyAdapter setAdapterData() {
List<String> list = new ArrayList<String>();
String sql;
sql="select ScenicSpots_name,S_price,S_introduction from V_Spots";
DataBaseService MyData = new DataBaseService(this);
Cursor cursor = MyData.getAllData(sql);
while(cursor.moveToNext()) {
list.add( cursor.getString(0));
list.add("门票:"+cursor.getString(1)+"元");
list.add( cursor.getString(2));
}
return new MyAdapter(this,list);
}
}不知道哪里出问题了,查出来的数据 显示很怪,我设置的布局都没了 直接变成一个LinearLayout
代码
public class MyAdapter extends BaseAdapter{
private LayoutInflater layoutInflater;
private List<String> list;
public List<TextView> txtList = new ArrayList<TextView>(); public MyAdapter(Context context, List<String> list) {
this.layoutInflater = LayoutInflater.from(context);
this.list = list;
} @Override
public int getCount() {
if(list == null){
return 0;
}
return list.size();
} @Override
public Object getItem(int position) {
return this.list.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = layoutInflater.inflate(R.layout.listview, null);
} TextView ScenicSpots_name = (TextView) convertView.findViewById(R.id.ScenicSpots_name);
TextView S_price =(TextView) convertView.findViewById(R.id.S_price);
TextView S_introduction =(TextView) convertView.findViewById(R.id.S_introduction);
ScenicSpots_name.setText(list.get(position));
S_price.setText(list.get(position));
S_introduction.setText(list.get(position)); //Activity中要获取数量的list
txtList.add(ScenicSpots_name);
txtList.add(S_price);
txtList.add(S_introduction);
return convertView;
}}这个是MyAdapter类
下面这个是使用MyAdapter的
package mars.Travel;import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import mars.Travel.DataBaseService;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ListView;
public class Play extends Activity {
private MyAdapter adapter = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO 自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.play);
ListView mListView = (ListView) findViewById(R.id.Sport_listView);
adapter = setAdapterData();
mListView.setAdapter(adapter);
}
private MyAdapter setAdapterData() {
List<String> list = new ArrayList<String>();
String sql;
sql="select ScenicSpots_name,S_price,S_introduction from V_Spots";
DataBaseService MyData = new DataBaseService(this);
Cursor cursor = MyData.getAllData(sql);
while(cursor.moveToNext()) {
list.add( cursor.getString(0));
list.add("门票:"+cursor.getString(1)+"元");
list.add( cursor.getString(2));
}
return new MyAdapter(this,list);
}
}不知道哪里出问题了,查出来的数据 显示很怪,我设置的布局都没了 直接变成一个LinearLayout
解决方案 »
- android 2.3 鼠标显示问题???
- 我想要做一个Android的游戏
- 基于NDK的OPENGL程序怎么解码PNG图片文件?必须去移植libpng/cximage类库吗?
- android新手,求助
- Theme/Translucent.NoTitleBar.Fullscreen主题设置的问题
- 求救!android向servlet提交数据,然后提交给jsp,如何在android端显示生成的这个jsp?
- 求android高手,解决不同进程间的数据共享问题
- Service not registered
- 海康摄像头出错
- Android抽屉问题
- 关于TextView不断赋值的问题
- 有人用过AChartEngine 绘制方波吗
txtList.add(ScenicSpots_name);
txtList.add(S_price);
txtList.add(S_introduction);
这里添加之前,先txtList.clear()!
while(cursor.moveToNext()) {
list.add( cursor.getString(0));
list.add("门票:"+cursor.getString(1)+"元");
list.add( cursor.getString(2));
}
这里每次用一个map存值,然后放入list里,例如:
Map<String,Object> map = new HashMap<String,Object>();
map.putString(key,value);
然后在 ScenicSpots_name.setText(list.get(position));
S_price.setText(list.get(position));
S_introduction.setText(list.get(position));
setText(list.get(position).get(key));分析一下你的错误,因为你每次list存入一个值,然后在取值的时候,同一个值取了3次。
不知道我上面的分析有没有错,欢迎拍砖!
ScenicSpots_name.setText(list.get(position));
S_price.setText(list.get(position));
S_introduction.setText(list.get(position));
这个地方不是很明显,三个控件设置了同一个值吗!!!