zoukankan      html  css  js  c++  java
  • android 自定义 listView

    目录:

    1.主布局 ListView

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="net.pericles.brdome.listview3dome.MainActivity">

    <ListView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/listvis"></ListView>
    </RelativeLayout>


    2 ListVIew 自定义cell的布局
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">


    <ImageView
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:id="@+id/imggs"
    />

    <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_weight="1">

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/txt1"/>

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/txt2"/>

    </LinearLayout>

    </LinearLayout>

    3.模型
    package net.pericles.brdome.listview3dome;

    /**
    * Created by you on 2016/9/21.
    */
    public class UserData {


    private String userId;
    private String userName;
    private int iconId;

    public void setUserId(String userId) {
    this.userId = userId;
    }

    public String getUserId() {
    return userId;
    }

    public String getUserName() {
    return userName;
    }

    public void setUserName(String userName) {
    this.userName = userName;
    }

    public int getIconId() {
    return iconId;
    }

    public void setIconId(int iconId) {
    this.iconId = iconId;
    }

    public UserData()
    {
    super();
    }

    public UserData( String userId,String userName, int iconId)
    {
    super();
    this.userName = userName;
    this.userId = userId;
    this.iconId = iconId;

    }

    }

    4.BaseAdapter方法处理cell
    package net.pericles.brdome.listview3dome;

    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;

    import java.util.List;

    /**
    * Created by you on 2016/9/21.
    */
    public class myDataAdeter extends BaseAdapter {

    private Context context;

    private List<UserData> lists;
    private LayoutInflater layoutInflaters;

    ImageView img;
    TextView tv1;
    TextView tv2;

    myDataAdeter(Context context,List<UserData> lists)
    {
    this.context =context;
    this.lists = lists;
    layoutInflaters = layoutInflaters.from(this.context);
    }

    @Override
    public int getCount() {
    return lists.size();
    }

    @Override
    public Object getItem(int position) {
    return lists.get(position);
    }

    @Override
    public long getItemId(int position) {
    return position;
    }

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

    if (convertView == null)
    {
    convertView = layoutInflaters.inflate(R.layout.ist_iemcell,null);
    }

    img = (ImageView) convertView.findViewById(R.id.imggs);
    tv1 = (TextView) convertView.findViewById(R.id.txt1);
    tv2 = (TextView) convertView.findViewById(R.id.txt2);

    img.setImageResource(lists.get(position).getIconId());
    tv1.setText(lists.get(position).getUserName());
    tv2.setText(lists.get(position).getUserId());

    return convertView;
    }
    }

    5.主控制器
    public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {

    private ListView listViews;
    private List<UserData> osts;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listViews = (ListView) findViewById(R.id.listvis);
    osts = getOsts();
    listViews.setAdapter(new myDataAdeter(this,osts));
    listViews.setOnItemClickListener(this);
    }

    private List<UserData>getOsts()
    {
    List<UserData>lss = new ArrayList<UserData>();
    for (int i = 0;i < 20; i ++)
    {
    UserData ss = new UserData();
    ss.setIconId(R.drawable.img1);
    ss.setUserName("标题:"+i);
    ss.setUserId("id:"+i);
    lss.add(ss);
    }
    return lss;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


    // Toast.makeText(this,((UserData)view.getItemAtPosition(position)).getUserName(),0).show();

    }
    }

    6.权限
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.pericles.brdome.listview3dome">

    <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    </application>

    </manifest>


    7.效果图

  • 相关阅读:
    bzoj1027
    bzoj1069
    poj2079
    poj2187
    bzoj2281
    bzoj2285
    bzoj1558
    bzoj1822
    bzoj1559
    bzoj1570
  • 原文地址:https://www.cnblogs.com/shenlaiyaoshi/p/5892802.html
Copyright © 2011-2022 走看看