91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android ListView實現圖文列表顯示

發布時間:2020-10-22 23:04:54 來源:腳本之家 閱讀:395 作者:Vivinia_Vivinia 欄目:移動開發

本文實例為大家分享了Android ListView實現圖文列表顯示的具體代碼,供大家參考,具體內容如下

目標效果:

  Android ListView實現圖文列表顯示

Android ListView實現圖文列表顯示

ListView如果內容過多,可以滑動屏幕來顯示,并且點擊某一行可使用吐司方法彈出對應的水果名字。

1.新建項目,新建entity實體類包,包中建存儲每行水果信息的Fruit類。

Fruit.java頁面:

package com.example.entity;
 
public class Fruit {
 private int imageId;     //使用id鎖定水果圖片
 private String imageName;   //對應的水果名字
 public Fruit(int imageId, String imageName) {
 super();
 this.imageId = imageId;
 this.imageName = imageName;
 }
 public int getImageId() {
 return imageId;
 }
 public void setImageId(int imageId) {
 this.imageId = imageId;
 }
 public String getImageName() {
 return imageName;
 }
 public void setImageName(String imageName) {
 this.imageName = imageName;
 }
}

2.在activity_main.xml頁面添加ListView控件,用于顯示所有的水果即水果名稱。

activity_main.xml頁面:

<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">
 
  <ListView
    android:id="@+id/lvFruits"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" >
  </ListView>
 
</RelativeLayout>

3.一個ListView中有多行信息,每行信息可以看成一個LinearLayout子布局,子布局中有兩個控件ImageView和TextView,按照水平排列。

listview_item.xml頁面:

<?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="wrap_content"
  android:orientation="horizontal" >
 
  <ImageView
    android:id="@+id/ivImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_launcher" />
 
  <TextView
    android:id="@+id/tvName"
    android:layout_marginLeft="10dp"
    android:layout_gravity="center_vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />
 
</LinearLayout>

4.新建adaptor包,包中建FruitAdaopter.java類,添加適配器,連接布局和數據。

FruitAdaopter.java頁面:

package com.example.adapter;
 
import java.util.List;
 
import com.example.entity.Fruit;
import com.example.listview.R;
 
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
 
public class FruitAdaoper extends ArrayAdapter<Fruit> {  // 適配器,泛型表示想要適配的數據類型
 
 private int resourceId;
 
 public FruitAdaoper(Context context, int textViewResourceId,
  List<Fruit> objects) {             // 第一個參數是上下文環境,第二個參數是每一項的子布局,第三個參數是數據
 super(context, textViewResourceId, objects);
 resourceId = textViewResourceId;          //獲取子布局
 }
 
 @Override     //getView方法在每個子項被滾動到屏幕內的時候都會被調用,每次都將布局重新加載一邊
 public View getView(int position, View convertView, ViewGroup parent) {//第一個參數表示位置,第二個參數表示緩存布局,第三個表示綁定的view對象
 View view;
 ViewHolder viewHolder;         //實例ViewHolder,當程序第一次運行,保存獲取到的控件,提高效率
 if(convertView==null){ 
  viewHolder=new ViewHolder();
  view = LayoutInflater.from(getContext()).inflate(//convertView為空代表布局沒有被加載過,即getView方法沒有被調用過,需要創建
   resourceId, null);     // 得到子布局,非固定的,和子布局id有關
  viewHolder.ivImage = (ImageView) view.findViewById(R.id.ivImage);//獲取控件,只需要調用一遍,調用過后保存在ViewHolder中
  viewHolder.tvName = (TextView) view.findViewById(R.id.tvName);  //獲取控件
  view.setTag(viewHolder);
 }else{
  view=convertView;      //convertView不為空代表布局被加載過,只需要將convertView的值取出即可
  viewHolder=(ViewHolder) view.getTag();
 }
 
 Fruit fruit = getItem(position);//實例指定位置的水果
 
 viewHolder.ivImage.setImageResource(fruit.getImageId());//獲得指定位置水果的id
 viewHolder.tvName.setText(fruit.getImageName());    //獲得指定位置水果的名字
 return view;
 
 }
} 
class ViewHolder{   //當布局加載過后,保存獲取到的控件信息。
 ImageView ivImage;
 TextView tvName;
}

5.在MainActivity.java頁面初始化數據信息,并添加點擊每一行的點擊事件。

MainActivity.java頁面:

package com.example.listview;
 
import java.util.ArrayList;
import java.util.List;
 
import com.example.adapter.FruitAdaoper;
import com.example.entity.Fruit;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
 
public class MainActivity extends Activity {
 
 private ListView lvFruits;
 private List<Fruit> fruitList = new ArrayList<Fruit>(); //創建集合保存水果信息
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 lvFruits = (ListView) findViewById(R.id.lvFruits);  //獲得子布局
 getData();
 FruitAdaoper fruitAdapter = new FruitAdaoper(this,
  R.layout.listview_item, fruitList);     //關聯數據和子布局
 lvFruits.setAdapter(fruitAdapter);          //綁定數據和適配器
 
 lvFruits.setOnItemClickListener(new OnItemClickListener() { //點擊每一行的點擊事件
 
  @Override
  public void onItemClick(AdapterView<?> adapterView, View view, int position,
   long id) {
  Fruit fruit=fruitList.get(position);     //獲取點擊的那一行
  Toast.makeText(MainActivity.this,fruit.getImageName(),Toast.LENGTH_LONG).show();//使用吐司輸出點擊那行水果的名字
  }
 });
 }
 
 private void getData() {
 int[] imageIds = { R.drawable.apple_pic, R.drawable.banana_pic,
  R.drawable.cherry_pic, R.drawable.grape_pic,
  R.drawable.mango_pic, R.drawable.orange_pic,
  R.drawable.pear_pic, R.drawable.pineapple_pic,
  R.drawable.strawberry_pic, R.drawable.watermelon_pic };
 String[] names = { "蘋果", "香蕉", "櫻桃", "葡萄", "芒果", "橘子", "梨", "菠蘿", "草莓",
  "西瓜" };
 for(int i=0;i<imageIds.length;i++){         //將數據添加到集合中
  fruitList.add(new Fruit(imageIds[i],names[i])); //將圖片id和對應的name存儲到一起
 }
 }
 
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
 getMenuInflater().inflate(R.menu.main, menu);
 return true;
 }
 
}

6.運行就可以出現目標效果了。

7.注意FruitAdaopter.java類中的getView方法在每個子項被滾動到屏幕內的時候都會被調用,每次都將布局重新加載一邊,所以為了提高效率可以進行判斷,如果程序運行過一次就將布局保存在參數convertView中。

8.同樣,getView中的獲取控件id如果每次運行都要執行,會降低效率,所以也需要定義ViewHolder類存儲獲取的控件信息,當第一次運行時執行findViewById()后,將所有的控件信息保存到實例的ViewHolder中,后邊每次進行調用即可。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿勒泰市| 营山县| 抚宁县| 苍梧县| 孝义市| 定远县| 安西县| 融水| 陇南市| 利川市| 梅河口市| 克东县| 花莲市| 资讯| 牟定县| 清丰县| 湖州市| 伊吾县| 嘉鱼县| 南和县| 平度市| 蛟河市| 沾化县| 沙河市| 濉溪县| 昌邑市| 平安县| 宕昌县| 锦州市| 淳安县| 庆元县| 通州市| 右玉县| 宣化县| 离岛区| 塔城市| 洪江市| 石门县| 黄浦区| 康保县| 蓬安县|