Android ListView自定义布局

本文介绍了Android新手在遇到ListView自定义布局时的学习过程。重点在于适配器的编写,通过创建listview.xml布局文件来实现ListView的个性化展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人,刚刚入行android,今天碰到ListView自定义布局的问题,参考了些网上资料,终于实现了这一功能,别喷我,小弟是新手

我认为最主要的是适配器的编写,在这里我们先写个LIstview的布局文件listview.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:orientation="horizontal" >
	<TextView
	android:id="@+id/item_tv"
	android:layout_width="0dp"
	android:layout_height="wrap_content"
	android:layout_weight="1"
	android:gravity="center_vertical"
	/>
	<TextView
	android:id="@+id/item_tv1"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"

	android:gravity="center_vertical"
	/>
	</LinearLayout>


然后我们就开始编写最主要部分了--适配器,集成BaseAdapter

public class ListViewAdapter extends BaseAdapter {
	
	//填充数据的List
	List<Map<String,Object>> list =new ArrayList<Map<String,Object>>();
	
	//上下文
	private Context context;
	
	//用来导入布局
	private LayoutInflater inflater =null;
	
	//构造器
	public ListViewAdapter(List<Map<String,Object>> list,Context context){
		this.context=context;
		this.list=list;
		inflater=LayoutInflater.from(context);
	}
	
	

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return list.size();
	}

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

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

	//核心部分,返回Listview视图
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		ViewHolder holder = null;
		
		if (convertView == null){
		holder=new ViewHolder();
		convertView =inflater.inflate(R.layout.listview, null);
		holder.tv=(TextView)convertView.findViewById(R.id.item_tv);
		holder.tv1=(TextView)convertView.findViewById(R.id.item_tv1);
		//为view设置标签
		convertView.setTag(holder);
		}else{
			holder=(ViewHolder)convertView.getTag();
		}	
	
			holder.tv.setText(list.get(position).get("text").toString());
			holder.tv1.setText(list.get(position).get("text1").toString());
		
		return convertView;
		
	}
	
	 
	
	
	 static class ViewHolder { 
		 TextView tv;
		  TextView tv1;

         } 


}




接下来是在Activity中实现整体功能了

public class OneTreasureActivity extends Activity {
	
	private ListView lv;
	private ListViewAdapter lvAdapter;
	List<Map<String,Object>> list =new ArrayList<Map<String,Object>>();
//	private ArrayList<String> list;
	
	
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        lv = (ListView) findViewById(R.id.CapsuleListView);
      //  list=new ArrayList<Map<String,Object>>();
        initDate();
        lvAdapter =new ListViewAdapter(list,this);
        lv.setAdapter(lvAdapter);
      
    }
	
	//为了省事,这里就不改了,大概就是请求数据,返回json值进行解析
	private void initDate() {
		// TODO Auto-generated method stub
		list=getCapsuleListData("servlet/ShowCapsuleServlet.do");
		
	}
	public void onetreasuremorebtn(View v){
		Intent intent = new Intent (OneTreasureActivity.this,OneTreasureMore.class);			
		startActivity(intent);	
	}
	
	
	public List<Map<String,Object>> getCapsuleListData(String s){
    	Map<String,Object> map =new HashMap<String,Object>();
    	  try{
    		  String url=HttpUtil.BASE_URL+s;
    		  String body=HttpUtil.queryStringForPost(url);
				JSONArray array=new JSONArray(body);
				list.clear();
    		    for(int i=0;i<array.length();i++){
    		    	JSONObject obj=array.getJSONObject(i);
    		    	map.put("text",obj.getString("text"));
    		    	map.put("text1", obj.getString("text1"));
    		        list.add(map);		 
    		    	map =new HashMap<String,Object>(); 	
    		    }	 
    		   
    		    }catch(Exception e){
    		     e.printStackTrace();
    		    }
    	  return list;
    
    }
	

}



就这样listview自定义布局完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值