子曾经曰过

  博客园  :: 首页  ::  ::  ::  :: 管理

listview列表控件,列表项包含文字,图片,选框等等。

使用步骤1:定义主页面xml文件以及listitem用到的xml定义文件

主页面xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout android:layout_width="match_parent" android:id="@+id/linearLayout1" android:layout_height="wrap_content" android:background="@drawable/topbg" android:gravity="center_vertical">

<ListView
android:id="@+id/hotfreelistview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/top"
android:layout_above="@+id/bottom"
android:background="@color/lightbg"
android:dividerHeight="1px"
android:divider="@color/dividercolor"
android:cacheColorHint="#00000000"
></ListView>

 </LinearLayout>

item 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="wrap_content"  
    android:paddingTop="10dip"  
    android:paddingBottom="10dip"  
    android:paddingLeft="15dip"  
    android:background="@color/greybg" android:orientation="horizontal"
    android:descendantFocusability="blocksDescendants"
    android:id="@+id/vlistitem"
    >
    <LinearLayout android:layout_height="wrap_content" android:orientation="vertical" android:layout_width="wrap_content" android:id="@+id/linearLayoutleft" android:gravity="center_vertical">
        <ImageView android:layout_width="64dip" android:layout_height="64dip" android:id="@+id/img" android:src="@drawable/logo"></ImageView>
    </LinearLayout>
    <LinearLayout android:layout_weight="1" android:layout_marginLeft="10dip" android:layout_width="wrap_content" android:id="@+id/linearLayoutright" android:layout_height="wrap_content" android:orientation="vertical">
        <TextView android:textColor="@color/listviewfontcolor" android:textSize="18dip" android:layout_height="wrap_content" android:id="@+id/title" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_width="fill_parent" android:text="phoenix" android:visibility="visible"></TextView>
        <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="TextView" android:id="@+id/summary"></TextView>
    </LinearLayout>
    <LinearLayout android:layout_weight="0" android:orientation="vertical" android:layout_marginLeft="10dip" android:layout_width="wrap_content" android:id="@+id/LinearLayout01" android:layout_height="fill_parent" android:gravity="center_vertical" android:visibility="gone">
        <TextView android:textColor="@color/listviewfontcolor" android:textSize="18dip" android:layout_height="wrap_content" android:id="@+id/TextView01" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_width="fill_parent" android:text="免费" android:visibility="invisible"></TextView>
       <!--  <TextView android:layout_height="wrap_content" android:id="@+id/TextView02" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_width="fill_parent" android:text="共N部"></TextView> -->
    </LinearLayout>
    <LinearLayout android:layout_marginLeft="10dip" android:layout_width="wrap_content" android:id="@+id/LinearLayout02" android:layout_height="fill_parent" android:orientation="horizontal" android:gravity="center_vertical" android:visibility="gone">
        <Button android:id="@+id/view_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/btn_addition" android:visibility="invisible"></Button>
        <LinearLayout android:layout_width="8dip" android:layout_height="2dip" android:id="@+id/linearLayout1" android:visibility="invisible"></LinearLayout>
    </LinearLayout>  
</LinearLayout>  

调用

步骤1引入布局:

public void onCreate(Bundle savedInstanceState) { 

setContentView(R.layout.recommendapp);
super.onCreate(savedInstanceState);

}

步骤2定义adapter:

定义ViewHolder供后面定义adapter时调用

public final class ViewHolder{
        public ImageView img;
        public TextView title;
        public TextView summary;
        public TextView linkurl;
        //public TextView info;
        //public Button viewBtn;
        //public LinearLayout vlayout;
        //public TextView isfreetextview;
        //public ImageView stars;
        public void setOnClickListener(OnClickListener onClickListener) {
            // TODO Auto-generated method stub
            
        }
    }

 


public
class MyAdapter extends BaseAdapter{ private LayoutInflater mInflater; private AsyncImageLoader asyncImageLoader; //private ListView listview; public MyAdapter(Context context){ this.mInflater = LayoutInflater.from(context); asyncImageLoader = new AsyncImageLoader(); //一定别忘了要初始化这个类 } @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(final int position, View convertView, ViewGroup parent) { //ViewCache viewCache; ViewHolder holder = null; if (convertView == null) { holder=new ViewHolder(); convertView = mInflater.inflate(R.layout.vlistrecommendapp, null); holder.img = (ImageView)convertView.findViewById(R.id.img); holder.title = (TextView)convertView.findViewById(R.id.title); holder.summary = (TextView)convertView.findViewById(R.id.summary); holder.linkurl = (TextView)convertView.findViewById(R.id.TextView01); //holder.isfreetextview = (TextView)convertView.findViewById(R.id.TextView01); //holder.info = (TextView)convertView.findViewById(R.id.info); //holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn); //holder.stars = (ImageView)convertView.findViewById(R.id.imageView1); //holder.vlayout = (LinearLayout)convertView.findViewById(R.id.vlistitem); convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); } String imageUrl = ((String) mData.get(position).get("packageimage")).trim(); //cover是临时代替使用,实际是要用 //imageUrl.toString(); holder.img.setTag(imageUrl); @SuppressWarnings("unused") Bitmap cachedImage = null; try { cachedImage = asyncImageLoader.loadDrawable(imageUrl, new phoenix.com.AsyncImageLoader.ImageCallback() { public void imageLoaded(Bitmap imageDrawable, String imageUrl) { ImageView imageViewByTag = (ImageView) lv.findViewWithTag(imageUrl); if (imageViewByTag != null) { //imageViewByTag.setImageDrawable(imageDrawable); imageViewByTag.setImageBitmap(imageDrawable); imageViewByTag.getLayoutParams().height = 72; imageViewByTag.getLayoutParams().width = 72; imageViewByTag.setScaleType(ScaleType.FIT_CENTER); imageViewByTag.setBackgroundColor(Color.TRANSPARENT); } //String a = "aaa"; //a.toString(); } }); } catch(Exception e) { e.getMessage().toString(); } if (cachedImage == null) { //Toast.makeText(getApplicationContext(), "a", Toast.LENGTH_SHORT).show(); holder.img.setImageResource(R.drawable.logo); //没有找到图片 }else{ //Toast.makeText(getApplicationContext(), "高度是:"+String.valueOf(this.dip2px(imageheight))+"宽度是:"+String.valueOf(this.dip2px(imagewidth)), Toast.LENGTH_SHORT).show(); //imageView.setImageDrawable(cachedImage); holder.img.setImageBitmap(cachedImage); holder.img.getLayoutParams().height = 72; holder.img.getLayoutParams().width = 72; holder.img.setScaleType(ScaleType.CENTER_CROP); //屏幕宽高 } //holder.img.setBackgroundResource(R.drawable.logo); holder.title.setText((String)mData.get(position).get("appname")); holder.summary.setText((String)mData.get(position).get("summary")); holder.linkurl.setText((String)mData.get(position).get("linkurl")); final String tempurl = (String) holder.linkurl.getText(); holder.summary.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Uri uri=Uri.parse(tempurl); Intent intent=new Intent(Intent.ACTION_VIEW,uri); startActivity(intent); } }); holder.title.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Uri uri=Uri.parse(tempurl); Intent intent=new Intent(Intent.ACTION_VIEW,uri); startActivity(intent); } }); holder.img.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Uri uri=Uri.parse(tempurl); Intent intent=new Intent(Intent.ACTION_VIEW,uri); startActivity(intent); } }); return convertView; } }

 

其中涉及到的数据来源定义 

private List<Map<String, Object>> mData;

在进行步骤3前要 

mData = getData();

比如getData定义从网上解析json

private List<Map<String, Object>> getData() {
        
        //***********************************************

            ArrayList<Map<String,Object>> books = new ArrayList<Map<String,Object>>();
            JSONObject json_book_player;
            JSONObject temp_book_player;
            JSONArray  son_book_player = null;
             
            try 
            {
              json_book_player = new JSONObject(NetUtil.getRequest(SplashScreen.domain+"/api/Apps", new DefaultHttpClient(new BasicHttpParams())));
                 temp_book_player = json_book_player.getJSONObject("paramz");
                 son_book_player = temp_book_player.getJSONArray("apps");
               
                 for(int i=0;i<son_book_player.length();i++)
                  {  
                     //注意,此处得到的记录顺序是乱的,一定要重新处理
                       JSONObject jsonObject2_book_player = (JSONObject)son_book_player.opt(i); 
                       
                       HashMap<String,Object> map = new HashMap<String,Object>();
                       map.put("packageimage", SplashScreen.domain+jsonObject2_book_player.getString("cover").trim());  //1
                       map.put("linkurl", URLDecoder.decode(jsonObject2_book_player.getString("android")));
                       //map.put("packageid", jsonObject2_book_player.getInt("packageid"));
                       //map.put("stars", jsonObject2_book_player.getInt("stars"));  //星评级
                       //map.put("isfree", jsonObject2_book_player.getString("isfree"));  //是否免费
                       map.put("summary", URLDecoder.decode(jsonObject2_book_player.getString("appsummary"),"utf-8"));
                       map.put("appname", URLDecoder.decode(jsonObject2_book_player.getString("appname"),"utf-8"));
                       //map.put("thumb", SplashScreen.domain+jsonObject2_book_player.getString("thumb"));
                       books.add(map);
                  } 
              } 
            catch (Exception e) 
            {
                  //Toast.makeText(getApplicationContext(),"error occused...", Toast.LENGTH_SHORT).show();    
                  e.printStackTrace();
              }
              
        return books;
 
    }

 

步骤3 将listview和adapter联系起来:

MyAdapter adapter;
ListView lv;

adapter = new MyAdapter(RecommendApp.this);
lv.setAdapter(adapter);

 

 

posted on 2012-10-28 15:47  人的本质是什么?  阅读(444)  评论(0编辑  收藏  举报