gpt4 book ai didi

java - 从自定义适配器访问ArrayList

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

我想做的是从 ListView 的客户适配器访问我的主要 Activity 中的 ArrayList。

我有一个可点击的 ListView ,这是我在客户适配器(onclick 所在的位置)中完成的。当用户单击它时,他们将输入一个标题(文本),该标题将更新主 Activity 中的数组列表(字符串)。

我已经阅读了有关该主题的其他一些问题,但我不知道如何进行这项工作。

我没有看到需要发布代码 fragment ,因为它只是一个基本的数组列表(字符串)和一个 ListView 的自定义适配器。如果需要代码我可以发布。谢谢!

这里是适配器代码的一部分:

public class PhotoAdapter extends ArrayAdapter<Photo> {

private final ArrayList<Photo> objects;

public PhotoAdapter(Context context, int textViewResourceId,
ArrayList<Photo> objects) {
super(context, textViewResourceId, objects);
this.objects = objects;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Photo i = objects.get(position);
View v = convertView;

if (v == null) {
LayoutInflater inflater = (LayoutInflater) getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.listview_row, null);
v.setClickable(true);
v.setFocusable(true);
}

这是来自主要 Activity 的代码

public ArrayList<Photo> m_photos = new ArrayList<Photo>();
public ArrayList<String> m_photo_captions = new ArrayList<String>();
private PhotoAdapter m_adapter;

this.list1 = (ListView) findViewById(R.id.lstPhotos);
m_adapter = new PhotoAdapter(this, R.layout.listview_row, m_photos);
LayoutInflater infalter = getLayoutInflater();
list1.setAdapter(m_adapter);

if (Intent.ACTION_SEND_MULTIPLE.equals(action)
&& intentGallery.hasExtra(Intent.EXTRA_STREAM)) {
ArrayList<Parcelable> list = intentGallery
.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
for (Parcelable p : list) {
Uri uri = (Uri) p;
imagePath = getPath(uri);
m_photos.add(new Photo(imagePath, ""));
m_photo_locations.add(imagePath);
m_photo_captions.add("");
m_adapter.notifyDataSetChanged();
}
}

onclick 监听器

    list1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
// Do whatever you want with m_photo_captions here
Log.v("listview", "listview item clicked");
appErrorAlert("test", "test");
}
});

最佳答案

您可以将要访问的 ArrayList 定义为全局实例变量,这样您就可以从自定义适配器内部访问它。

如果您提供问题的代码 fragment 也会很有帮助。

关于java - 从自定义适配器访问ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12151901/

25 4 0