book_item.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:paddingTop="5dp" android:paddingBottom="5dp" android:layout_height="140dp"> <ImageView android:id="@+id/book_item_image" android:layout_width="130dp" android:layout_height="match_parent" android:src="@mipmap/book" /> <LinearLayout android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:paddingLeft="10dp" android:orientation="vertical"> <TextView android:id="@+id/book_item_name" android:layout_width="match_parent" android:layout_height="40dp" android:elegantTextHeight="true" android:maxLines="2" android:ellipsize="end" android:text="书书名名书书名名书名名名"/> <TextView android:id="@+id/book_item_author" android:layout_width="match_parent" android:layout_height="30dp" android:text="作者"/> <TextView android:id="@+id/book_item_price" android:layout_width="match_parent" android:layout_height="30dp" android:text="价钱"/> <TextView android:id="@+id/book_item_comment" android:layout_width="match_parent" android:layout_height="30dp" android:text="评价"/> </LinearLayout> </LinearLayout
适配器:BookAdapter.java
package com.lzc.androidtest.adapter; import android.content.Context; import android.support.annotation.NonNull; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import com.lzc.androidtest.R; import com.lzc.androidtest.model.Book; import java.util.List; /** * Created by User on 2018/3/26. */ public class BookAdapter extends ArrayAdapter<Book> { private int resourceId; public BookAdapter(Context context, int resource, List<Book> objects) { super(context, resource, objects); resourceId = resource; } @NonNull @Override public View getView(int position, View convertView, ViewGroup parent) { Book book = getItem(position); View view; ViewHolder viewHolder; if(convertView == null) { view = LayoutInflater.from(getContext()).inflate(resourceId,parent,false); viewHolder = new ViewHolder(); viewHolder.imageView = (ImageView)view.findViewById(R.id.book_item_image); viewHolder.name = (TextView)view.findViewById(R.id.book_item_name); viewHolder.author = (TextView)view.findViewById(R.id.book_item_author); viewHolder.price = (TextView)view.findViewById(R.id.book_item_price); viewHolder.comment = (TextView)view.findViewById(R.id.book_item_comment); view.setTag(viewHolder);//将viewHolder存储在view中 }else{ view = convertView; viewHolder = (ViewHolder)view.getTag(); //重新获取viewHolder } viewHolder.imageView.setImageResource(book.getImageId()); viewHolder.name.setText(book.getName()); viewHolder.author.setText(book.getAuthor()); viewHolder.price.setText("¥ "+book.getPrice()); viewHolder.comment.setText(String.valueOf(book.getComment())); return view; } class ViewHolder{ ImageView imageView; TextView name; TextView author; TextView price; TextView comment; } }
activity_list_view.xml
<?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:id="@+id/activity_list_view" 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="com.lzc.androidtest.ListViewActivity"> <ListView android:id="@+id/list_view_book" android:layout_width="match_parent" android:layout_height="wrap_content"/> </RelativeLayout>
ListViewActivity.java
package com.lzc.androidtest; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.ListView; import android.widget.Toast; import com.lzc.androidtest.adapter.BookAdapter; import com.lzc.androidtest.model.Book; import java.util.ArrayList; import java.util.List; public class ListViewActivity extends AppCompatActivity { private List<Book> bookList = new ArrayList<>(); private BookAdapter adapterListView; private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_view); initData(); } private void initData() { for (int i = 0;i<40;i++){ Book book = new Book(R.mipmap.book,"书名"+(i+1)+",书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名书名v","作者"+(i+1),19.1,10000); bookList.add(book); } adapterListView = new BookAdapter(ListViewActivity.this,R.layout.book_item,bookList); listView = (ListView)findViewById(R.id.list_view_book); listView.setAdapter(adapterListView); //设置listview点击事件 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Book book = bookList.get(i); Toast.makeText(ListViewActivity.this,book.toString(),Toast.LENGTH_LONG).show(); } }); } }
运行结果
点击效果