2012-09-27 3 views
2

나는 다음과 같은 코드를 사용하고 있습니다 : -OnItemClickLIstener가 PullToRefreshLIstView에서 작동하지 않는 이유는 무엇입니까?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.newsfeed); 
    setAllControlls(); 
    myPrefs = this.getSharedPreferences(
      AppConstants.MYPREF, MODE_WORLD_READABLE); 
    userid = myPrefs.getString(AppConstants.USER_ID, ""); 

    if(checkInternet(NewFeeds.this)) 
    { 
     new callNewsfeeddata().execute(userid); 
    } 
    else 
    { 
     Toast.makeText(NewFeeds.this,"Please Check Your Internet Connection",Toast.LENGTH_LONG).show(); 
    } 

    objlistview.setOnRefreshListener(new OnRefreshListener() { 

     @Override 
     public void onRefresh() { 
      if(checkInternet(NewFeeds.this)) 
      { 
       new callNewsfeeddata().execute(userid); 
      } 
      else 
      { 
       Toast.makeText(NewFeeds.this,"Please Check Your Internet Connection",Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 

    objHandler = new Handler() { 
     public void handleMessage(Message msg) { 
      switch (msg.what) { 
      case AppConstants.UPDATE_ADDRESS: 
       if (!((String) msg.obj).equals("0")) { 
        System.out.println("inside---" + objlocationvalue); 
        objlocationvalue = (String) msg.obj; 
       } else { 
        objlocationvalue = "1"; 
       } 
       break; 
      } 
     } 
    }; 
    objLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
} 


private void setAllControlls() { 

    objlistview = (PullToRefreshListView) findViewById(R.id.newsfeedlistview); 
    objlistview.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int pos, 
       long arg3) { 

      int pos1=pos-1; 

      NewsFeedModle objnewsfeedmodle = objlist.get(pos); 
      String type = objnewsfeedmodle.getType(); 
      if(type.equalsIgnoreCase("job")) 
      { 
       String postid = objnewsfeedmodle.getJobId(); 
       Intent objintent = new Intent(NewFeeds.this,ShowNewPostJobDetails.class); 
       Bundle objbundle = new Bundle(); 
       objbundle.putString("postid", postid); 
       objbundle.putString("from","newsfeed"); 
       objintent.putExtras(objbundle); 
       startActivity(objintent); 
      } 
      if(type.equalsIgnoreCase("deals")) 
      { 
       String postid = objnewsfeedmodle.getDealid(); 
       Intent objintent = new Intent(NewFeeds.this,ShowNewFindDeal.class); 
       Bundle objbundle = new Bundle(); 
       objbundle.putString("postid", postid); 
       objbundle.putString("from","newsfeed"); 
       objintent.putExtras(objbundle); 
       startActivity(objintent); 
      } 
      if(type.equalsIgnoreCase("stuff")) 
      { 
       String postid = objnewsfeedmodle.getStuffId(); 
       Intent objintent = new Intent(NewFeeds.this,ShowNewFindStuff.class); 
       Bundle objbundle = new Bundle(); 
       objbundle.putString("postid", postid); 
       objbundle.putString("from","newsfeed"); 
       objintent.putExtras(objbundle); 
       startActivity(objintent); 
      } 

     } 
    }); 
} 

private class callNewsfeeddata extends 
     AsyncTask<String, Void, List<NewsFeedModle>> { 
    ProgressDialog objprogress = new ProgressDialog(NewFeeds.this); 
    AppRequestHandler objApprequest = new AppRequestHandler(); 

    List<NewsFeedModle> objresponce = new ArrayList<NewsFeedModle>(); 

    @Override 
    protected void onPreExecute() { 
     objprogress.setMessage("Please Wait While Loading..."); 
     objprogress.show(); 
    } 

    @Override 
    protected List<NewsFeedModle> doInBackground(String... params) { 
     objresponce = objApprequest.newsFeedRequest(params[0]); 
     return objresponce; 
    } 

    @Override 
    protected void onPostExecute(List<NewsFeedModle> result) { 
     if (objprogress.isShowing()) { 
      objprogress.dismiss(); 
     } 
     if(objlist!=null && objlist.size()!=0) 
     { 
      objlist.clear();  
     } 
     String msgcount=""; 
     if (result != null) 
      { 
      objlist=result; 
      if(objlist.size()==0) 
      { 
       Log.i("check",""+objlist.size()); 
       Log.i("check22222",""+result.size()); 
      } 
      if(objlist!=null && objlist.size()!=0) 
      { 
      msgcount = objlist.get(0).getMessagescount(); 
      } 
      TabActivity tab=(TabActivity) getParent(); 
      TextView tv=(TextView) tab.findViewById(R.id.notificationmsg); 
      tv.setText(msgcount); 
      Editor objedit = myPrefs.edit(); 
      objedit.putString(AppConstants.MESSAGECOUNT, msgcount); 
      objedit.commit(); 
      objnewsFeedAdapter = new NewsFeedAdapter(NewFeeds.this,objlist,(float)objlattvalue,(float)objlongvalue,objlocationvalue); 
      objlistview.setAdapter(objnewsFeedAdapter); 
      objnewsFeedAdapter.notifyDataSetChanged(); 
      objlistview.onRefreshComplete(); 
     } 
    } 
} 

내가 setAllContrill 방법 내부 OnItemClickLIstener 정의가 있지만 working.listView이 unclickable 사람이 .I이 무엇인지 알아 GitHub의에 pulltorefresh 코드 .I 수없는 사용하고 저를 제안한다 아니다 문제가 다른 장소에가 작동하기 때문에 ..

답변

3

시도 :`

objlistview.getRefreshableView().setOnItemClickListener(new OnItemClickListener...) 
2

getRefreshableView()PullToRefreshListView에서 setOnItemClickListener() 그냥 통과 throu 때문에 도움이되지 않습니다 gh 방법 :

public void setOnItemClickListener(OnItemClickListener listener) { 
    mRefreshableView.setOnItemClickListener(listener); 
} 

동일한 문제가 있으며 아이템 레이아웃에 클릭 가능한 요소가 있음이 드러났습니다. 이 요소를 클릭 할 수 없게 만든 후에는 작동을 시작합니다.

+0

예, 작동합니다. 고맙습니다! – SalutonMondo

관련 문제