gpt4 book ai didi

java - 仅包含图像的 ListView

转载 作者:行者123 更新时间:2023-12-01 13:23:49 26 4
gpt4 key购买 nike

我只是问自己是否有一种方法可以制作没有任何文本的 ListView。我只找到了带有图像+文本的ListView,而这正是我不想要的。我只想添加很多图像(例如在列表中),而不想使用 ImageView 来添加它,因为这会使我的应用程序崩溃。另外,我不希望我的应用程序滞后。谢谢!

这是我在 Activity_main.xml 中得到的

<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"

/>

我从另一篇文章中发现了这个,它实际上对我有帮助,但它没有显示所有图像

public class MainActivity extends Activity {


// Array of integers points to images stored in /res/drawable-hdpi/
int[] vehs = new int[]{
R.drawable.veh1,
R.drawable.veh2,
R.drawable.veh3,
R.drawable.veh4,
R.drawable.veh5,
R.drawable.veh6,
R.drawable.veh7,
R.drawable.veh8,
R.drawable.veh9,
R.drawable.veh10,
R.drawable.veh11,
R.drawable.veh12,
R.drawable.veh13,
R.drawable.veh14,
R.drawable.veh15,
R.drawable.veh16,
R.drawable.veh17,
R.drawable.veh18,
R.drawable.veh19,
R.drawable.veh20,
R.drawable.veh21,
R.drawable.veh22,
R.drawable.veh23,
R.drawable.veh24,
R.drawable.veh25,
R.drawable.veh26,
R.drawable.veh27,
R.drawable.veh28,
R.drawable.veh29,
R.drawable.veh30,
R.drawable.veh31,
R.drawable.veh32,
R.drawable.veh33,
R.drawable.veh34,
R.drawable.veh35,
R.drawable.veh36,
};


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// Each row in the list stores country name, currency and flag
List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>();

for(int i=0;i<10;i++){
HashMap<String, String> hm = new HashMap<String,String>();
hm.put("vehs", Integer.toString(vehs[i]) );
aList.add(hm);
}

// Keys used in Hashmap
String[] from = { "vehs","txt","cur" };

// Ids of views in listview_layout
int[] to = { R.id.vehs,R.id.txt,R.id.cur};

// Instantiating an adapter to store each items
// R.layout.listview_layout defines the layout of each item
SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), aList, R.layout.listview_layout, from, to);

// Getting a reference to listview of main.xml layout file
ListView listView = ( ListView ) findViewById(R.id.listview);

// Setting the adapter to the listView
listView.setAdapter(adapter);
}

}

没有编辑所有代码,所以你可能会发现一些令人困惑的事情 xD

最佳答案

方式ListView通过使用适配器显示数据。适配器获取您的数据,将其插入自定义 View ,然后将其添加到列表中。

构建快速图像ListView ,您要做的第一件事是添加 Picasso到你的项目。这个库会自动下载并缓存你的图片,处理ImageView回收等。

您要做的下一件事是编写项目 View 。如果您想要一个仅包含图像的列表,则 View 可以如此简单:

<!-- res/layout/list_item.xml -->

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight" />

接下来,您要创建适配器。它接受 List<String>图像 URL 作为输入,构建项目并将它们插入到 ListView .

public class ImageListAdapter extends ArrayAdapter<String> {
List<String> items;

public ImageListAdapter(Context context, int resource, List<String> items) {
super(context, resource, items);
this.items = items;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.list_item, null);
}

Picasso.with(getContext())
.load(items.get(position))
.into((ImageView) convertView);

return convertView;
}
}

阅读Picasso library documentation如果您想添加更多选项,例如图像占位符、转换等。

最后,在您的 ListView 上使用适配器,将其添加到您的 Activity 的 onCreate方法:

List<String> images = new ArrayList<String>();
images.add("http://hometowncolumbia.files.wordpress.com/2007/12/lol-cats-dont-look-behind-cat.jpg");
images.add("http://i232.photobucket.com/albums/ee245/topswing/cat-lol.jpg");

listView = (ListView)findViewById(R.id.myListView);
listView.setAdapter(new ImageListAdapter(this, R.layout.list_item, images))

但在实际应用程序中,您可能希望从服务器加载图像列表。您需要使用 AsyncTask为此。

关于java - 仅包含图像的 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21894766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com