데이터베이스에서 가져온 일부 데이터 (문자열)를 보여주기 위해 ListView를 사용했습니다 ... 아주 간단하지만 제 동료 중 한 명이 이미지를 화면의 텍스트 앞에 놓기로했습니다. 우리는 ListView로는 할 수 없었지만 우리가 GridView를 사용하여 약간의 시간을 보냈으며 텍스트 앞 부분에 이미지를 넣었던 GridView를 사용한 예제를 발견했습니다.) (ImageAdapter를 사용하여 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에 소스는 어댑터의getItem(int position)
현장에서
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 (새 ImageAdapter (this, name_array, description_array))를 설정하는 것이 었습니다. – user1419496
하지만 ImageAdapter는 표준 클래스가 아니므로 ImageAdapter 클래스의 코드를 증명해야합니다. getItem 메서드가 null을 반환하는 것으로 생각됩니다. –