listview死活显示不出来数据。

Kylix_NOW 2011-03-22 04:50:49
<?xml version="1.0" encoding="utf-8"?>
testlist.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:id="@+id/LinearLayout01">

<TextView android:id="@+id/TestList_TextViewTitle"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:text="@string/testlist_title" />

<ListView android:id="@+id/TestList_ListView01"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:stackFromBottom="true" android:layout_weight="1">
</ListView>

</LinearLayout>


listlayout1.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:id="@+id/listlayout1_img"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_margin="5px" />
<LinearLayout android:orientation="vertical"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:id="@+id/listlayout1_title"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:textColor="#FFFFFFFF" android:textSize="22px" />
<TextView android:id="@+id/listlayout1_info"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:textColor="#FFFFFFFF" android:textSize="13px" />
</LinearLayout>
</LinearLayout>

代码部分:

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.testlist);

TextView _TextView = (TextView) findViewById(R.id.TestList_TextViewTitle);
ListView _ListView = (ListView) findViewById(R.id.TestList_ListView01);

// 添加并且显示
BaseAdapter _BaseAdapter = getAdapter2();
_ListView.setAdapter(_BaseAdapter);

// 添加点击
_ListView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
setTitle("点击第" + arg1 + " " + arg2 + " " + arg3 + "个项目");

}
});

// 添加长按点击
_ListView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
menu.setHeaderTitle("长按菜单-ContextMenu");
menu.add(0, 0, 0, "弹出长按菜单0");
menu.add(0, 1, 0, "弹出长按菜单1");
}
});

setListAdapter(getAdapter());
}

private BaseAdapter getAdapter2() {
//生成动态数组,加入数据
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
for(int i=0;i<10;i++)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.icon);//图像资源的ID
map.put("ItemTitle", "Level "+i);
map.put("ItemText", "Finished in 1 Min 54 Secs, 70 Moves! ");
listItem.add(map);
}

//生成适配器的Item和动态数组对应的元素
final SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源
R.layout.listlayout2,//ListItem的XML实现
//动态数组与ImageItem对应的子项
new String[] {"ItemImage","ItemTitle", "ItemText"},
//ImageItem的XML文件里面的一个ImageView,两个TextView ID
new int[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText}
);

return listItemAdapter;

}
...全文
1086 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kylix_NOW 2011-03-24
  • 打赏
  • 举报
回复
谢谢 a222123
kkandkkg 2011-03-23
  • 打赏
  • 举报
回复
还是需要多看看SDK 的API。
prince58 2011-03-23
  • 打赏
  • 举报
回复
你把这部份的代码也帖出来看下,还有你可以用eclipse的debug功能来设置断点根踪每一步的执行过程。
prince58 2011-03-23
  • 打赏
  • 举报
回复
这里怎么还有一个setListAdapter(getAdapter());??
oDon 2011-03-23
  • 打赏
  • 举报
回复
getXXX 都要实现了
a222123 2011-03-23
  • 打赏
  • 举报
回复

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<LinearLayout android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView android:id="@+id/imgsmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5px"/>
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="665px"
android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/txt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF"
android:text="名 称:"
android:textSize="22px" />
<TextView android:id="@+id/txtname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF"
android:textSize="22px" />
<TextView android:id="@+id/txt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF"
android:text="价 格:"
android:textSize="13px" />
<TextView android:id="@+id/txtprice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF"
android:textSize="22px" />
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/txt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF"
android:text="类 别:"
android:textSize="22px" />
<TextView android:id="@+id/txtmsecondid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF"
android:textSize="22px" />
</LinearLayout>
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
>
<Button android:id="@+id/btselect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|top"
android:text="详 细"
/>
<Button android:id="@+id/btinsert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="预 定"
/>
</LinearLayout>
</LinearLayout>



package com.yookey.activity;

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

import com.yookey.activity.MainActivity.ClickEvent;
import com.yookey.activity.MainActivity.ItemClickListener;
import com.yookey.dal.DDineManager;
import com.yookey.model.DDine;
import com.yookey.model.MFirst;
import com.yookey.model.MSecond;

import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class ShowCookbookActivity extends ListActivity {
List<DDine> ddinelist=null;
private List<Map<String, Object>> mData;
Class<com.yookey.activity.R.drawable> cls = R.drawable.class;
DDineManager ddm=new DDineManager();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
ddinelist=ddm.GetDdinelist(getIntent().getStringExtra("autoid"));
mData = getData();
MyAdapter adapter = new MyAdapter(this);
setListAdapter(adapter);
}



private List<Map<String, Object>> getData() {
List<Map<String, Object>> datalist = new ArrayList<Map<String, Object>>();
for(DDine dd : ddinelist){
HashMap<String, Object> map = new HashMap<String, Object>();
Integer imgid=0;
try {
imgid = cls.getDeclaredField(dd.getDineImgSmall()).getInt(null);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
map.put("imgsmall", imgid);
map.put("txtname", dd.getDineName());
map.put("txtprice", dd.getDinePrice());
map.put("txtmsecondid", dd.getmSecondId());
map.put("autoid", dd.getAutoId());
datalist.add(map);
}
return datalist;
}


public final class ViewHolder{
public ImageView imgsmall;
public TextView txtname;
public TextView txtprice;
public TextView txtmsecondid;
public TextView txt1;
public TextView txt2;
public TextView txt3;
public Button btselect;
public Button btinsert;
}



public class MyAdapter extends BaseAdapter{

private LayoutInflater mInflater;


public MyAdapter(Context context){
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();
}

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

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

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

ViewHolder holder = null;
if (convertView == null) {

holder=new ViewHolder();
convertView = mInflater.inflate(R.layout.cookbooklist, null);
holder.imgsmall = (ImageView)convertView.findViewById(R.id.imgsmall);
holder.txtname = (TextView)convertView.findViewById(R.id.txtname);
holder.txtprice = (TextView)convertView.findViewById(R.id.txtprice);
holder.txt1 = (TextView)convertView.findViewById(R.id.txt1);
holder.txt2 = (TextView)convertView.findViewById(R.id.txt2);
holder.txt3 = (TextView)convertView.findViewById(R.id.txt3);
holder.txtmsecondid = (TextView)convertView.findViewById(R.id.txtmsecondid);
holder.btselect = (Button)convertView.findViewById(R.id.btselect);
holder.btinsert = (Button)convertView.findViewById(R.id.btinsert);
convertView.setTag(holder);

}else {

holder = (ViewHolder)convertView.getTag();
}


holder.imgsmall.setBackgroundResource((Integer)mData.get(position).get("imgsmall"));
holder.txtname.setText((String)mData.get(position).get("txtname"));
holder.txtmsecondid.setText((String)mData.get(position).get("txtmsecondid"));
holder.txtprice.setText((String)mData.get(position).get("txtprice"));

//可以保存ID值
holder.btselect.setOnClickListener(new Select());
holder.btselect.setTag((String)mData.get(position).get("txtname"));
holder.btinsert.setOnClickListener(new Insert());
holder.btinsert.setTag((String)mData.get(position).get("autoid"));



return convertView;
}

}
class Select implements View.OnClickListener{

@Override
public void onClick(View v) {
setTitle(v.getTag().toString());
}
}

class Insert implements View.OnClickListener{

@Override
public void onClick(View v) {
setTitle(v.getTag().toString());
}
}
}


再不会呢,就是智商问题了...
我直接给你项目源代码了...
ch_984326013 2011-03-22
  • 打赏
  • 举报
回复
把Adapter封装成一个类试试看!
youngwolf 2011-03-22
  • 打赏
  • 举报
回复
你这个要求,必须要自己实现adapter,android框架自带的adapter只支持字符串。
flying_vip_521 2011-03-22
  • 打赏
  • 举报
回复
感觉是细节问题,我拿demo改的时候,遇到过两次因为细节而导致不能正常运行
dinjay 2011-03-22
  • 打赏
  • 举报
回复
我觉得LZ还是安装apidemos里的list例子来做吧,也好维护。自己继承base来实现一个adapter
Kylix_NOW 2011-03-22
  • 打赏
  • 举报
回复
我这个其实也是从一个例子改编的,例子可以执行。但是这个死活不行。
儿大不由爷 2011-03-22
  • 打赏
  • 举报
回复
自己做一个Adaper看看

80,351

社区成员

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

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