【发布时间】:2012-06-01 22:55:52
【问题描述】:
我曾使用 ListView 来显示从数据库中检索到的一些数据(字符串)...非常简单,但我的一位同事决定将图像放在屏幕中文本的前面。我们无法用 Listview 做到这一点,但我们发现了一些 GridView 示例,看起来完全符合我们的需要,然后我们花了一些时间使用 GridView 并将图像放在文本的前面。
现在,不幸的是,我们不知道如何获取选定的项目(基于来自选定项目的文本)
我正在使用 OnItemClickListener,并在 onItemClick 方法中使用 gridView.getItemSelectedAtPosition(),但我得到的所有内容都是“null”。
如果 ImageAdapter 与它有关,我现在不知道,因为如果我将其更改为 ArrayAdapter,我可以正确获取正确的项目,但是以这种方式在行中没有图像。
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id{ String selectedItem = (String) (gridView.getItemAtPosicion(position)); //always null } });
我能做什么?
已编辑 - ListView 源代码
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class ImageAdapter extends BaseAdapter {
private Context context;
private final String[] mobileValues;
private final String[] mobileValuesD;
public ImageAdapter(Context context, String[] mobileValues, String[] mobileValuesD) {
this.context = context;
this.mobileValues = mobileValues;
this.mobileValuesD = mobileValuesD;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
// get layout from mobile.xml
gridView = inflater.inflate(R.layout.pesquisa_2, null);
// set value into textview
TextView textView = (TextView) gridView.findViewById(R.id.grid_item_label);
textView.setText(mobileValues[position]+"\n"+mobileValuesD[position]);
// set image based on selected text
ImageView imageView = (ImageView) gridView.findViewById(R.id.grid_item_image);
String mobile = mobileValues[position];
//SELECT DAS IMAGENS
if (mobile.equals("pdt1")) {
imageView.setImageResource(R.drawable.img1);
} else if (mobile.equals("prd2")) {
imageView.setImageResource(R.drawable.feijao);
} else {
imageView.setImageResource(R.drawable.acucar);
}
} else {
gridView = (View) convertView;
}
return gridView;
}
public int getCount() {
return mobileValues.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
}
【问题讨论】:
-
你的图像适配器的代码是什么样的?
-
@TomaszGawel 我们唯一做的就是设置适配器 gridView.setAdapter(new ImageAdapter(this, name_array, description_array));
-
但是 ImageAdapter 不是标准类,所以请提供 ImageAdapter 类的代码,因为我怀疑它的 getItem 方法只是为您的情况返回 null。
-
@TomaszGawel 抱歉,我真的认为这是一个标准课程,因为不是我将 Listview 更改为 Gridview 我不知道所做的一切......顺便说一句你是对的,该方法返回null,您知道如何编写它以获取所选行上的文本吗?谢谢
-
如果你不提供来源我该怎么办?
标签: android gridview selecteditem