Java 如何从具有字符串成员arraylist的类填充listview?
我正在创建一个应用程序,其中有一个应用程序活动的列表视图,每个应用程序都有一个点击式侦听器,可以使用应用程序信息打开一个活动 这是应用程序类:Java 如何从具有字符串成员arraylist的类填充listview?,java,android,xml,Java,Android,Xml,我正在创建一个应用程序,其中有一个应用程序活动的列表视图,每个应用程序都有一个点击式侦听器,可以使用应用程序信息打开一个活动 这是应用程序类: public class Application { private String title; private String imageUrl; private ArrayList<String> appVersions; public Application(String title, String
public class Application {
private String title;
private String imageUrl;
private ArrayList<String> appVersions;
public Application(String title, String imageUrl, ArrayList<String> appVersions) {
this.title = imageName;
this.imageUrl = imageUrl;
this.appVersions = appVersions;
}
public String getTitle() {
return title;
}
public void setTitle(String imageName) {
this.title = imageName;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public ArrayList<String> getAppVersions() {
return appVersions;
}
public void setAppVersions(ArrayList<String> appVersions) {
this.appVersions = appVersions;
}
}
每个应用程序对象都有以下版本:
应用1:
名称:app1
图片:imageUrl
版本:v1.0
v 1.1
v 1.2
画廊布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="100">
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="50"
android:id="@+id/image"
android:scaleType="centerCrop"
android:src="@mipmap/ic_launcher_round"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/image_description"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="Canada"
android:textColor="#000"/>
<ListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="40"
android:id="@+id/app_versions">
</ListView>
</LinearLayout>
在应用程序ClickListener中:
ArrayList<String> versionList = adapter.getItem(position).getAppVersions();
当您正在为应用程序版本创建另一个列表时,您的适配器
需要字符串列表(作为您的数据结构)
更改ApplicationVersionAdapter
ApplicationVersionAdapter adapter = new ApplicationVersionAdapter(this, R.layout.layout_appversion, versionList);
appVersionsList.setAdapter(adapter);
import java.util.ArrayList;
public class ApplicationVersionAdapter extends ArrayAdapter<String> {
private static final String TAG = "ApplicationVersionAdapt";
private Context mContext;
private int mResource;
public ApplicationVersionAdapter(@NonNull Context context, int resource, @NonNull ArrayList<String> objects) {
super(context, resource, objects);
this.mContext = context;
this.mResource = resource;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
String appVersion = getItem(position);
// String appVersion = getItem(position).getImageName();
Log.d("Application version: ", getItem(position));
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(mResource, parent, false);
TextView tvAppVersion = convertView.findViewById(R.id.app_version);
tvAppVersion.setText(appVersion);
return convertView;
}
}
import java.util.ArrayList;
公共类应用程序版本适配器扩展了ArrayAdapter{
私有静态最终字符串标记=“ApplicationVersionAdapt”;
私有上下文;
私人国际资源;
公共应用程序版本适配器(@NonNull上下文上下文,int资源,@NonNull ArrayList对象){
超级(上下文、资源、对象);
this.mContext=上下文;
this.mResource=资源;
}
@非空
@凌驾
公共视图getView(int位置,@Nullable视图convertView,@NonNull视图组父级){
字符串appVersion=getItem(位置);
//字符串appVersion=getItem(位置).getImageName();
Log.d(“应用程序版本:”,getItem(位置));
LayoutFlater充气机=LayoutFlater.from(mContext);
convertView=充气机。充气(mResource,父项,false);
TextView tvAppVersion=convertView.findViewById(R.id.app\u版本);
setText(appVersion);
返回视图;
}
}
在
ApplicationVersionAdapter
中,您将在getView
中再次列出应用程序,这是错误的。您只需要关心版本的特定应用程序列表 您面临的问题是什么?我可以从主活动填充应用程序列表,但我想在gallery活动中填充应用程序版本列表,当您单击应用程序列表项时,您必须解释问题。到目前为止,您已经做了什么以及您正在尝试做什么。到目前为止,我制作了一个适配器来填充应用程序列表(主活动),并在您单击应用程序列表项时将其名称发送到一个活动,该活动显示有关应用程序的信息(库活动),如应用程序图像、应用程序标题、应用程序版本(字符串数组列表)我想在gallery Activity中填充应用程序版本列表用应用程序版本列表填充另一个列表,就像创建应用程序列表一样。
public class GalleryActivity extends AppCompatActivity {
private static final String TAG = "GalleryActivity";
ListView appVersionsList;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery);
appVersionsList = findViewById(R.id.app_versions);
Log.d(TAG, "onCreate: started.");
getIncommingIntent();
}
private void getIncommingIntent() {
Log.d(TAG, "getIncommingIntent: checking for the incomming intents");
if(getIntent().hasExtra("image_url") && getIntent().hasExtra("image_name")) {
String imageUrl = getIntent().getStringExtra("image_url");
String imageName = getIntent().getStringExtra("image_name");
setImage(imageUrl, imageName);
}
}
public void setImage(String imageUrl, String imageName) {
Log.d(TAG, "setImage: setting the image and name to widgets.");
TextView name = findViewById(R.id.image_description);
name.setText(imageName);
ImageView image = findViewById(R.id.image);
Glide.with(this)
.asBitmap()
.load(imageUrl)
.into(image);
}
}
ArrayList<String> versionList = adapter.getItem(position).getAppVersions();
ApplicationVersionAdapter adapter = new ApplicationVersionAdapter(this, R.layout.layout_appversion, versionList);
appVersionsList.setAdapter(adapter);
import java.util.ArrayList;
public class ApplicationVersionAdapter extends ArrayAdapter<String> {
private static final String TAG = "ApplicationVersionAdapt";
private Context mContext;
private int mResource;
public ApplicationVersionAdapter(@NonNull Context context, int resource, @NonNull ArrayList<String> objects) {
super(context, resource, objects);
this.mContext = context;
this.mResource = resource;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
String appVersion = getItem(position);
// String appVersion = getItem(position).getImageName();
Log.d("Application version: ", getItem(position));
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(mResource, parent, false);
TextView tvAppVersion = convertView.findViewById(R.id.app_version);
tvAppVersion.setText(appVersion);
return convertView;
}
}