나는 ListView에서 느린 이미지로드를 생성합니다. 에서 자습서를 따라 갔는데 Stack Overflow 성공적으로 실행되었습니다.OnItemClickListener 문제
하지만 코드와 함께 프로젝트에 참여하면 문제가 발생합니다. 이 프로그램은 아니오 OnItemClickListener :(
내 프로젝트는 TabHost이 수행되지 않았으며 그것은 5 개 탭의 내용을 가지고이 개 내용이 ListActivity를 사용하여 완벽하게 실행 여기
내 코드입니다 Main.java를 :..public class ProductListing extends Activity {
ListView list;
MyListAdapter adapter;
Controller c;
ImageLoader imageLoader;
TextView select;
//========== JSON ===========
ArrayList<String> strName = new ArrayList<String>();
ArrayList<String> strImage = new ArrayList<String>();
ArrayList<String> strDesc = new ArrayList<String>();
ArrayList<String> strSize = new ArrayList<String>();
JSONObject jsonObject;
String[] listItem;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LoadJSON();
setContentView(R.layout.productlisting_tab);
list=(ListView)findViewById(R.id.ListView01);
c = new Controller(this);
adapter=new MyListAdapter(this,this, strName, strImage,strDesc,strSize);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
System.out.println("Item Clicked");
}
});
}
public void LoadJSON(){
try {
InputStream is = this.getResources().openRawResource(R.raw.premium);
byte[] buffer;
buffer = new byte[is.available()];
while(is.read(buffer) != -1);
String jsonText = new String(buffer);
jsonObject = new JSONObject(jsonText);
JSONObject premium_tab = jsonObject.getJSONObject("premium_tab");
int totalItem = premium_tab.getInt(".total");
for (int i = 1; i <= totalItem; i++) {
JSONObject premium = premium_tab.getJSONObject("premium_"+i);
String tempName =premium.getString(".name").toString();
String tempImg = premium.getString(".image").toString();
String tempDesc = premium.getString(".desc").toString();
String tempSize = premium.getString(".size").toString();
strName.add(tempName);
strImage.add(tempImg);
strDesc.add(tempDesc);
strSize.add(tempSize);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
MyListAdapter.java :.
public MyListAdapter(Context b,Activity a, ArrayList<String> strName, ArrayList<String> strImage,
ArrayList<String> strDesc, ArrayList<String> strSize) {
activity = a;
name = strName;
image = strImage;
desc = strDesc;
size = strSize;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return image.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public static class ViewHolder{
public TextView ProductName,ProductSize, ProductDesc;
public ImageView ProductIcon;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
ViewHolder holder;
if(convertView==null){
vi = inflater.inflate(R.layout.productlisting, null);
holder=new ViewHolder();
holder.ProductName=(TextView)vi.findViewById(R.id.text);
holder.ProductIcon=(ImageView)vi.findViewById(R.id.image);
holder.ProductDesc=(TextView)vi.findViewById(R.id.textdesc);
holder.ProductSize=(TextView)vi.findViewById(R.id.textsize);
vi.setTag(holder);
}
else
holder=(ViewHolder)vi.getTag();
holder.ProductName.setText(name.get(position));
holder.ProductDesc.setText(desc.get(position));
holder.ProductIcon.setTag(image.get(position));
holder.ProductSize.setText(size.get(position));
imageLoader.DisplayImage(image.get(position), activity, holder.ProductIcon);
return vi;
}
}
이름 ImageLoader.java 위의 소스 링크를 참조하시기 바랍니다 또 다른 클래스 내 실수가 어디 있는지 알 수 있을까요? 내 코드가 매우 못생긴 것을 이해하고, 나는 안드로이드에서 새로운 문제를 해결하도록 도와주세요. 며칠 동안 나를 찔렀다. 귀하의 회신은 대단히 감사합니다 !!!
P/S : 나쁜 영어에 대해 유감스럽게 생각하며, 내가 무슨 말을하는지 이해하길 바랍니다. 감사합니다.
시선 Wynix는
"itemClick does not work"를 잘 설명 할 수 있습니까? logcat에 오류가 있습니까? 정기적 인 간격으로 로그를 추가하여 디버깅을 시도하여 작동하지 않는 부분을 찾으십니까? – Sephy
어댑터가 조금 이상하다고 생각하지 않습니까? 그것은 심지어 안드로이드 프레임 워크에서 어댑터 클래스를 확장하지 않습니다 ... – Sephy
안녕 Sephy 답장을 보내 주셔서 감사합니다, 나는 logcat에 아무런 오류가 없으며 "System.out.println ("Item Click! ")"OnItemClickListener() 함수를 호출합니다. 그러나 logcat는 어떤 한 단어도 출력하지 못했습니다. 어댑터에 대해서, 그것은 BaseAdapter를 확장했습니다, 미안 해요. 몇 줄의 사본을 놓치세요 .. – WynixToo