android - 如何使用来自arraylist listview的bundle传递图像到详细活动
问题描述
我想将 ArrayList 中的图像传递到详细信息活动中,我正在使用此代码但图像未加载
这是我的 MainActivity
package com.example.latihanlist;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewStub;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ViewStub stubList;
private ListView listview;
private ListViewArrayAdapter listViewArrayAdapter;
private List<Artikel> artikelList;
private List<Artikel> getArtikelList() {
artikelList= new ArrayList<>();
artikelList.add(new Artikel(R.drawable.mob,"Title 1","1 hours ago","Descriptions of text 1"));
artikelList.add(new Artikel(R.drawable.mob,"Title 2","1 hours ago","Descriptions of text 2"));
artikelList.add(new Artikel(R.drawable.mob,"Title 3","1 hours ago","Descriptions of text 3"));
artikelList.add(new Artikel(R.drawable.mob,"Title 4","1 hours ago","Descriptions of text 4"));
artikelList.add(new Artikel(R.drawable.ic_launcher_background,"Title 5","1 hours ago","Descriptions of text 5"));
artikelList.add(new Artikel(R.drawable.mob,"Title 6","1 hours ago","Descriptions of text 6"));
artikelList.add(new Artikel(R.drawable.ic_launcher_background,"Title 7","1 hours ago","Descriptions of text 7"));
artikelList.add(new Artikel(R.drawable.ic_launcher_background,"Title 8","1 hours ago","Descriptions of text 8"));
artikelList.add(new Artikel(R.drawable.ic_launcher_background,"Title 9","1 hours ago","Descriptions of text 9"));
artikelList.add(new Artikel(R.drawable.ic_launcher_background,"Title 10","1 hours ago","Descriptions of text 10"));
return artikelList;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
stubList=(ViewStub) findViewById(R.id.stublist);
stubList.inflate();
listview=(ListView) findViewById(R.id.list_view);
stubList.setVisibility(View.VISIBLE);
getArtikelList();
listViewArrayAdapter=new
ListViewArrayAdapter(this,R.layout.list_item,artikelList);
listview.setAdapter(listViewArrayAdapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Bundle bundle = new Bundle();
bundle.putString("data1", artikelList.get(position).getTitle().toString());
bundle.putInt("data2", artikelList.get(position).getImageId());
Intent intent = new Intent(MainActivity.this, DetailBerita.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
}
这是我的艺术课
package com.example.latihanlist;
public class Artikel {
private int imageId;
private String title;
private String timestamp;
private String descriptions;
public Artikel(int imageId, String title, String timestamp, String
descriptions) {
this.imageId = imageId;
this.title = title;
this.timestamp = timestamp;
this.descriptions = descriptions;
}
**public int getImageId() {
return imageId;
}**
public void setImageId(int imageId) {
this.imageId = imageId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
public String getDescriptions() {
return descriptions;
}
public void setDescriptions(String descriptions) {
this.descriptions = descriptions;
}
}
这是详细活动类
package com.example.latihanlist;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class DetailBerita extends AppCompatActivity {
ImageView mImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detail_view);
TextView tvData1 = (TextView) findViewById(R.id.detail_title1);
TextView tvData2 = (TextView) findViewById(R.id.detail_title);
mImageView = (ImageView) findViewById(R.id.imageView2);
Bundle bundle = getIntent().getExtras();
tvData2.setText(bundle.getString("data1"));
mImageView .setImageResource(bundle.getInt("data2"));
}
}
这是详细布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:id="@+id/detail_title"
android:layout_height="match_parent"
/>
<TextView
android:layout_width="match_parent"
android:id="@+id/detail_title1"
android:layout_height="match_parent"
/>
<ImageView
android:id="@+id/imageView2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_below="@+id/toolbar2"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"/>
</LinearLayout>
我使用 ArrayList 来显示数据,并使用 int 设置图像,并尝试使用 bundle 将数据传递给其他活动。但这只是 textView 中显示的 data1 并且未加载 Imageview 。请帮助我更正此代码。
解决方案
mImageView 和 .setImageResource 之间有一个空格。删除它并检查一下
推荐阅读
- google-sheets - 计算间隔中给定字符的出现次数
- xml - 在 Python 3.6 中将相同的 XML 属性分组在一起
- javascript - 如何获取表单中输入文本字段的名称
- node.js - 未处理的承诺拒绝警告(尽管有 catch 块)
- java - java.sql.Blob 包含什么?
- php - 正则表达式 PHP 字符串的一部分
- javascript - 调用在回调中定义的函数
- macos - Shellscript:Pmset 值作为 else if 脚本中的变量
- javascript - 在 div 中选择文本,为什么 .text 不起作用?
- sql - 无法从备份还原 SQL 数据库