Tôi đã sử dụng một ListView để hiển thị một số dữ liệu (String) được lấy từ cơ sở dữ liệu ... khá đơn giản, nhưng một trong những đồng nghiệp của tôi đã quyết định đặt một hình ảnh ở phía trước văn bản trên màn hình. Chúng tôi đã không thể làm điều đó với Listview, nhưng chúng tôi đã tìm thấy một số ví dụ với GridView trông chính xác như chúng tôi cần sau đó chúng tôi đã dành một số thời gian bằng cách sử dụng GridView và đã đặt hình ảnh ở phía trước của văn bản.Làm cách nào để lấy mục đã chọn từ GridView bằng ImageAdapter? (Android)
Bây giờ, tiếc là chúng tôi không biết làm thế nào để có được những sản phẩm được chọn (dựa trên các văn bản xuất phát từ mục đã chọn)
Tôi đang sử dụng OnItemClickListener, và trong vòng onItemClick phương pháp gridView.getItemSelectedAtPosition() , nhưng tất cả mọi thứ tôi nhận được là "null".
Tôi không phải bây giờ nếu ImageAdapter có gì để làm với nó, vì tôi thay đổi nó thành một ArrayAdapter tôi có thể có được đúng mục nhưng không có hình ảnh trong hàng theo cách này.
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id{ String selectedItem = (String) (gridView.getItemAtPosicion(position)); //always null } });
tôi có thể làm gì?
EDITED - ListView nguồn
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;
}
}
Và cách mã bộ chuyển đổi hình ảnh của bạn trông như thế nào? –
@TomaszGawel điều duy nhất chúng tôi đã làm là đặt AdapterView.setAdapter (new ImageAdapter (this, name_array, description_array)); – user1419496
nhưng ImageAdapter không phải là một lớp tiêu chuẩn để provvide mã của lớp ImageAdapter, như tôi nghi ngờ đó là phương thức getItem đơn giản trả về null cho trường hợp của bạn. –