ListView多佈局加載

使用ListView加載多種佈局,這裏加載兩種,兩種佈局如下

1 item_left,文字在左,圖片在右

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="horizontal">


    <TextView
        android:id="@+id/text_content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:gravity="left"
        android:padding="5dp"
        />

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:src="@mipmap/ic_launcher"
        />
</RelativeLayout>

2 item_right,圖片在左,文字在右
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="horizontal">

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:src="@mipmap/ic_launcher"
        />

    <TextView
        android:id="@+id/text_content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:gravity="right"
        android:padding="5dp"
        />
</RelativeLayout>

activity_main
<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=".MainActivity">

    <ListView
        android:id="@+id/list_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </ListView>
</RelativeLayout>
適配器ListAdapter
public class ListAdapter extends BaseAdapter {

    private List<String> contents;
    private Context context;

    public ListAdapter(List<String> contents, Context context) {
        this.contents = contents;
        this.context = context;
    }

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

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

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

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

        View view = convertView;
        LayoutInflater inflater = LayoutInflater.from(context);
        int type = getItemViewType(position);
        if (view == null) {
            //位置爲偶數的就讓內容顯示在右邊,奇數就顯示在左邊
            switch (type) {
                case 0:
                    view = inflater.inflate(R.layout.item_right, parent, false);
                    break;
                case 1:
                    view = inflater.inflate(R.layout.item_left, parent, false);
                    break;
            }
        }

        ViewHolder holder = (ViewHolder) view.getTag();
        if (holder == null) {
            holder = new ViewHolder();
            holder.imageView = (ImageView) view.findViewById(R.id.image);
            holder.textView = (TextView) view.findViewById(R.id.text_content);
        }

        holder.textView.setText(contents.get(position));

        return view;
    }

    //返回佈局的種類個數
    @Override
    public int getViewTypeCount() {
        return 2;
    }

    //返回佈局的類型
    @Override
    public int getItemViewType(int position) {
        return position % 2;
    }

    static class ViewHolder {
        TextView textView;
        ImageView imageView;
    }
}

MainActivity代碼

public class MainActivity extends Activity {

    private ListView listView;

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

        listView = (ListView) this.findViewById(R.id.list_content);
        List<String> contents = new ArrayList<>();
        for (int i = 1; i <= 50; i++) {
            contents.add("這是第" + i + "條數據");
        }

        ListAdapter adapter = new ListAdapter(contents, this);
        listView.setAdapter(adapter);
    }
}
 


發佈了44 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章