2015-11-28 60 views
0

嗨,朋友,我試圖實現自定義對話框中的列表視圖,並通過使用JSON動態傳遞數據和到處搜索,但沒有任何解決方案,我已經嘗試了過去3天的一切我也沒有看到我的代碼中有任何錯誤我已經正確設置適配器我得到這個錯誤列表視圖適配器設置空對象在自定義對話框

嘗試調用虛擬方法'void android.widget.ListView.setAdapter(android.widget.ListAdapter)'上的空對象引用

public class Cat_comment_adap extends BaseAdapter { 

    String cid; 
    ImageLoader imageLoader = AppController.getInstance().getImageLoader(); 
    int idddget; 
    private LayoutInflater inflater; 
    private List<CurrentList> catlist; 
    private PopupWindow commentWindow; 
    ArrayList<CurrentList> commentlist = new ArrayList<CurrentList>(); 

Activity activity; 
    public Cat_comment_adap(Activity activity, List<CurrentList> catlist) { 
     this.activity = activity; 
     this.catlist = catlist; 


    } 

    @Override 
    public int getCount() { 
     return catlist.size(); 
    } 

    @Override 
    public Object getItem(int i) { 
     return catlist.get(i); 
    } 

    @Override 
    public long getItemId(int i) { 
     return i; 
    } 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 
     inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.cat_row, viewGroup, false); 


     NetworkImageView singleimg = (NetworkImageView) view.findViewById(R.id.singleimg); 
     final ImageView agree = (ImageView) view.findViewById(R.id.agree); 
     ImageView commentbox = (ImageView) view.findViewById(R.id.commentbox); 
     commentbox.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       onShowpopup(view); 
       Toast.makeText(activity, "Comments Button clicked", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     final CurrentList catertlist = catlist.get(i); 

     singleimg.setImageUrl(catertlist.getCatimg(), imageLoader); 

     idddget = catertlist.getCcids(); 
     SharedPreferences eveid = activity.getSharedPreferences("loginPrefs", Context.MODE_PRIVATE); 
     cid = eveid.getString("userid", ""); 

     agree.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       String url = "http://sampletemplates.net/majority/api.php?action=addVote&question_id=" + idddget + "&user_id=" + cid + "&vote=1&source=android"; 
       Log.d("Vote", "http://sampletemplates.net/majority/api.php?action=addVote&question_id=" + idddget + "&user_id=" + cid + "&vote=1&source=android"); 
       JsonObjectRequest voting = new JsonObjectRequest(Request.Method.POST, url, null, new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 
         try { 
          String votings = response.getString("status"); 
          if (votings.equals("success")) { 
           agree.setImageResource(R.drawable.agreed); 
           Toast.makeText(activity, "Voted Successfully", Toast.LENGTH_SHORT).show(); 
          } else { 
           Toast.makeText(activity, "Already Voted", Toast.LENGTH_SHORT).show(); 
          } 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

        } 
       }, new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 

        } 
       }); 
       AppController.getInstance().addToRequestQueue(voting); 
      } 
     }); 
     return view; 
    } 

    public void onShowpopup(View v) { 
     LayoutInflater layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View popupview = layoutInflater.inflate(R.layout.current_comment_dialog, null); 
     ListView commentsListView = (ListView) v.findViewById(R.id.commentsListView); 
//  commentAdapter = new comment_adapter(activity, commentlist); 
     WindowManager wm = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE); 
     Display display = wm.getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 
     int width = size.x; 
     int height = size.y; 
     commentWindow = new PopupWindow(popupview, width - 50, height - 400, true); 
     commentWindow.setBackgroundDrawable(activity.getResources().getDrawable(R.drawable.comment_bg)); 
     commentWindow.setFocusable(true); 
     commentWindow.setOutsideTouchable(true); 
     commentWindow.showAtLocation(v, Gravity.BOTTOM, 0, 100); 
     commentsListView.setAdapter(new comment_adapter(activity,commentlist)); 
     commentAdapter.notifyDataSetChanged(); 
    } 

適配器類

public class comment_adapter extends BaseAdapter { 
    private Activity activity; 
    private LayoutInflater inflater; 
    private List<CurrentList> commentlist; 
    public comment_adapter(Activity activity, List<CurrentList> commentlist){ 
     this.activity = activity; 
     this.commentlist = commentlist; 

    } 

    @Override 
    public int getCount() { 
     return commentlist.size(); 
    } 

    @Override 
    public Object getItem(int i) { 
     return commentlist.get(i); 
    } 

    @Override 
    public long getItemId(int i) { 
     return i; 
    } 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 
     if (inflater == null) 
      inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (view == null) 
      view = inflater.inflate(R.layout.comment_row, viewGroup, false); 
     TextView user_name = (TextView) view.findViewById(R.id.user_name); 
     TextView posttime = (TextView) view.findViewById(R.id.posttime); 
     TextView comtsdetails = (TextView) view.findViewById(R.id.comtsdetails); 
     CurrentList listofcomments = commentlist.get(i); 
     user_name.setText(listofcomments.getEvtusername()); 
     posttime.setText(listofcomments.getTimetaken()); 
     comtsdetails.setText(listofcomments.getEvcomment()); 
     return view; 
    } 
} 
+2

[什麼是空引用(http://stackoverflow.com/questions/ 4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – noev

+0

表示它沒有任何值 – prominere

+0

commentsListView爲空 – noev

回答

0

這裏在這個類Cat_comment_adap的方法onShowpopup改變 查看popupview = layoutInflater.inflate(R.layout.current_comment_dialog , 空值); ListView commentsListView =(ListView)v.findViewById(R.id.commentsListView);

查看popupview = layoutInflater.inflate(R.layout.current_comment_dialog,NULL); ListView commentsListView =(ListView)popupview.findViewById(R.id.commentsListView);

因爲此佈局的充氣的ListView所以我只好給膨脹佈局對象的名的方法不是參數

0
 public void onClick(View view) { 
      onShowpopup(view); 
      Toast.makeText(activity, "Comments Button clicked", Toast.LENGTH_SHORT).show(); 
     } 

這裏經過的觀點是不R.layout.cat_row像你想象的,但它被點擊一個按鈕。

所以只使用onShowpopup(self.view),它會工作:)

或更改onClick(View clickedButton)

+0

沒有改變同樣的錯誤先生 – prominere

+0

:D我瞎關鍵字,你必須使用this.view,而不是自我,沒有關鍵字自我在Java中。 –

相關問題