2016-02-23 128 views
1

ArrayAdaptergetView未被調用,而getCount返回了列表大小。在設置適配器與列表中的原始列表項以設置適配器之前,我已應用setAdapter(null),但它不起作用。儘管getCount被調用,但ArrayAdapter getview未被調用

而且還試圖BaseAdapter的相同,但仍然沒有運氣

我試過的代碼是 -

public PrintLabelAdapter(Context context, int layoutResourceId, ArrayList<String> data) { 
super(context, layoutResourceId, data); 
     this.layoutResourceId = layoutResourceId; 
     this.context = context; 
     this.data = data; 
     //Log.d("sublistcount", "sublistcount" +data.size()); 
    } 

    @Override 
    public int getCount() { 

     Log.d("getcount", "getcount" + data.size()); 
     return data.size(); 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     WeatherHolder holder = null; 
     // db=new DatabaseHandler(context); 

     Log.d("getcount", "getcount in getview" + data.size()); 
     final String weather; 
     if (row == null) { 

      Log.d("getcount", "getcount in getviewin row i"); 

      LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
      row = inflater.inflate(layoutResourceId, parent, false); 

      holder = new WeatherHolder(); 
      // holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon); 
      holder.txt = (TextView) row.findViewById(R.id.txt); 

      holder.chk = (CheckBox) row.findViewById(R.id.chk); 

      row.setTag(holder); 
     } else { 

      Log.d("getcount", "getcount in getviewin row i111"); 
      holder = (WeatherHolder) row.getTag(); 
     } 

     weather = data.get(position); 

     holder.txt.setText(weather); 
     // holder.imgIcon.setImageResource(weather.icon); 
     final WeatherHolder finalHolder = holder; 
     holder.chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

       if(isChecked){ 
        finalHolder.chk.setButtonDrawable(R.mipmap.checked); 

        //db.updateMovingDay(weather.getTitle(),1); 
       } 
       else 
       { 
        // db.updateMovingDay(weather.getTitle(),0); 
        finalHolder.chk.setButtonDrawable(R.mipmap.uncheck); 

       } 

      } 
     }); 

     return row; 
    } 

    static class WeatherHolder { 
     ImageView imgIcon; 
     TextView txt; 
     CheckBox chk; 
    } 

} 

這是我的setAdapter碼 -

PrintLabelAdapter labeladapternew = new PrintLabelAdapter(mContext,R.layout.labeitem, fine.get(i)); 
list4.setAdapter(labeladapternew); 
labeladapternew.notifyDataSetChanged(); 
list4.invalidateViews(); 

請讓我知道,如果我做錯了什麼。

編輯

public class PrintLabelScreen extends Activity { 
    // http://developers.itextpdf.com/itext-java 

    Context mContext; 
    ImageView head, img_back, icon; 
    TextView centertxt; 
    ImageView search, print, inbox, home, fav; 
    ListView list1, list2, list3, list4; 
    String label; 
    TextView text1, texts1, text2, texts2, text3, texts3, text4, texts4; 

    String priorty; 
    int i1; 

    ArrayList aList; 
    Button fragilebtn, fragilebtn1, fragilebtn2, fragilebtn3; 
    List<String> sublist = null; 
    List<String> sublist1 = null; 
    String fragile; 

    Button next, prev; 

    int count = 0; 
    PrintLabelAdapter  labeladapter; 
    int prevcount = 0; 
    Map<Integer, ArrayList<String>> m1 = new HashMap<Integer, ArrayList<String>>(); 
// Map<Integer,List<Integer>> m2 = new HashMap<Integer,List<Integer>>(); 
// 
List<ArrayList<User>> usize=null; 
    List<ArrayList<String>> favlist=null; 
    AbstractViewRenderer page = null; 
    AbstractViewRenderer page1 = null; 
    AbstractViewRenderer page2 = null; 
    AbstractViewRenderer page3 = null; 
    LinearLayout linear1, linear2; 
    ProgressBar progressBar1; 
DatabaseHandler db; 
    ArrayList finalList = new ArrayList<String>(); 
    List<List<ArrayList<String>>> finallist; 
int count1=0; 
RelativeLayout lastrel; 
    //PdfDocument doc 
PdfDocument doc=null; 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.printlabel); 

     mContext = PrintLabelScreen.this; 
     db=new DatabaseHandler(mContext); 

     centertxt = (TextView) findViewById(R.id.centertxt); 

     centertxt.setText("Print Labels"); 
     icon.setVisibility(View.GONE); 
     img_back.setVisibility(View.GONE); 
     head.setVisibility(View.GONE); 
     search.setVisibility(View.GONE); 
     fav.setVisibility(View.GONE); 
     home.setVisibility(View.VISIBLE); 
     print.setVisibility(View.VISIBLE); 
     inbox.setVisibility(View.VISIBLE); 
     text4 = (TextView) findViewById(R.id.text4); 
     texts4 = (TextView) findViewById(R.id.texts4); 



     Log.d("text", "text" + fragile); 
     texts1.setText("UNPACKING PRIORITY:" + priorty); 
     texts2.setText("UNPACKING PRIORITY:" + priorty); 
     texts3.setText("UNPACKING PRIORITY:" + priorty); 
     texts4.setText("UNPACKING PRIORITY:" + priorty); 

     text1.setText(label); 
     text2.setText(label); 
     text3.setText(label); 
     text4.setText(label); 


     aList = new ArrayList(Arrays.asList(text.split(","))); 



     if(aList.size()>40) 
     { 
     lastrel.setVisibility(View.VISIBLE); 
     } 

     Log.d("FFFFFFF", "FFFFFF" + aList.size()); 




     if (!aList.get(0).equals("")) { 
      i1 = (int) Math.ceil(aList.size()/10.0); 
     } 

     sublist = new ArrayList<String>(); 


     int x = 0; 
     for (int p = 0; p < i1; p++) { 


      //Log.d("listiss", "listiss" +p); 
      if (aList.size() >= (x + 10)) { 
       sublist = new ArrayList<String>(aList.subList(x, x + 10)); 
       x += 10; 
      } else { 
       sublist = new ArrayList<String>(aList.subList(x, aList.size())); 


      } 




      finalList.add(sublist); 

      Log.d("finallist", "finallist" +  finalList.size()); 


      prevcount=sublist.size(); 
    //db.addLabelItem(p, (ArrayList<String>) sublist); 


      // addLabelItem(String id, ArrayList <String> labellist) 



      m1.put(p,(ArrayList<String>) sublist); 


      if (fragile.equalsIgnoreCase("Y")) { 
       fragilebtn.setVisibility(View.VISIBLE); 
       fragile = "Y"; 

      } else { 
       fragilebtn.setVisibility(View.GONE); 
       fragile = "N"; 

      } 


      if (aList.size() != 0) { 
       if (p == 0) { 

        if (fragile.equalsIgnoreCase("Y")) { 
         fragilebtn.setVisibility(View.VISIBLE); 
         fragile = "Y"; 

        } else { 
         fragilebtn.setVisibility(View.GONE); 
         fragile = "N"; 

        } 
     labeladapter = new PrintLabelAdapter(this,R.layout.labeitem, 
          (ArrayList) m1.get(p)); 
        list1.setAdapter(labeladapter); 


       } else if (p == 1) { 
        if (fragile.equalsIgnoreCase("Y")) { 
         fragilebtn1.setVisibility(View.VISIBLE); 
         fragile = "Y"; 


        } else { 
         fragilebtn1.setVisibility(View.GONE); 
         fragile = "N"; 

        } 


      labeladapter = new PrintLabelAdapter(this,R.layout.labeitem, 
          (ArrayList) m1.get(p)); 
        list2.setAdapter(labeladapter); 

       } else if (p == 2) { 
        if (fragile.equalsIgnoreCase("Y")) { 
         fragilebtn2.setVisibility(View.VISIBLE); 
         fragile = "Y"; 

        } else { 
         fragilebtn2.setVisibility(View.GONE); 
         fragile = "N"; 
        } 


      labeladapter = new PrintLabelAdapter(this,R.layout.labeitem, 
          (ArrayList) m1.get(p)); 
        list3.setAdapter(labeladapter); 

       } else if (p == 3) { 


        if (fragile.equalsIgnoreCase("Y")) { 
         fragilebtn3.setVisibility(View.VISIBLE); 
         fragile = "Y"; 

        } else { 
         fragilebtn3.setVisibility(View.GONE); 
         fragile = "N"; 

        } 

     labeladapter = new PrintLabelAdapter(this,R.layout.labeitem, 
          (ArrayList) m1.get(p)); 
        list4.setAdapter(labeladapter); 

       } 


      } 


     } 



     finallist=chopped(finalList,4); 

     Log.d("FFFFFFF", "FFFFFF" + finallist.size()); 

     // Log.d("Array", "Array 1" +finallist.size()); 

     inbox.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       int x = 0; 


      try { 
       for (int i = 0; i < finallist.size(); i++) { 

        final int finalI = i; 
        page = new AbstractViewRenderer(mContext, R.layout.printlabel1) { 
         private String _text; 

         public void setText(String text) { 



         } 

         @Override 
         protected void initView(View view) { 
          // TextView tv_hello = (TextView)view.findViewById(R.id.tv_hello); 
          //PrintLabelAdapter labeladapter = null; //tv_hello.setText(_text); 


          favlist = finallist.get(finalI); 

          for (int j = 0; j < favlist.size(); j++) { 


           if (j == 0) { 

            labeladapter = new PrintLabelAdapter(mContext,R.layout.labitem, 
              favlist.get(0)); 

            list1 = (ListView) view.findViewById(R.id.list1); 
            list1.setAdapter(labeladapter); 
            labeladapter.notifyDataSetChanged(); 
            text1 = (TextView) view.findViewById(R.id.text1); 
            texts1 = (TextView) view.findViewById(R.id.texts1); 

            fragilebtn = (Button) view.findViewById(R.id.fragilebtn); 


            texts1.setText("UNPACKING PRIORITY:" + priorty); 
            text1.setText(label); 

            try { 

             if (fragile.equalsIgnoreCase("Y")) { 

              fragilebtn.setVisibility(View.VISIBLE); 
             } 
            } catch (Exception e) { 
             e.printStackTrace(); 
            } 

           } 


           if (j == 1) { 
            labeladapter = new PrintLabelAdapter(mContext,R.layout.labitem, 
              favlist.get(1)); 
            //Log.d("listiss","listiss"+slist2.size()); 

            list2 = (ListView) view.findViewById(R.id.list2); 
            list2.setAdapter(labeladapter); 
            labeladapter.notifyDataSetChanged(); 
            text2 = (TextView) view.findViewById(R.id.text2); 
            texts2 = (TextView) view.findViewById(R.id.texts2); 
            fragilebtn1 = (Button) view.findViewById(R.id.fragilebtn1); 


            texts2.setText("UNPACKING PRIORITY:" + priorty); 
            text2.setText(label); 

            try 

            { 
             if (fragile.equalsIgnoreCase("Y")) { 

              fragilebtn1.setVisibility(View.VISIBLE); 
             } 
            } catch (Exception e) 

            { 
             e.printStackTrace(); 
             ; 
            } 


           } 


           if (j == 2) 

           { 

            labeladapter = new PrintLabelAdapter(mContext,R.layout.labitem, 
              favlist.get(2)); 


            list3 = (ListView) view.findViewById(R.id.list3); 
            list3.setAdapter(labeladapter); 
            labeladapter.notifyDataSetChanged(); 
            text3 = (TextView) view.findViewById(R.id.text3); 
            texts3 = (TextView) view.findViewById(R.id.texts3); 
            fragilebtn2 = (Button) view.findViewById(R.id.fragilebtn2); 

            texts3.setText("UNPACKING PRIORITY:" + priorty); 
            text3.setText(label); 
            try { 

             if (fragile.equalsIgnoreCase("Y")) { 

              fragilebtn2.setVisibility(View.VISIBLE); 
             } 
            } catch (Exception e) { 
             e.printStackTrace(); 
            } 


           } 


           if (j == 3) { 

            labeladapter = new PrintLabelAdapter(mContext,R.layout.labitem, 
              favlist.get(3)); 


            list4 = (ListView) view.findViewById(R.id.list4); 
            list4.setAdapter(labeladapter); 
            labeladapter.notifyDataSetChanged(); 
            text4 = (TextView) view.findViewById(R.id.text4); 
            texts4 = (TextView) view.findViewById(R.id.texts4); 
            fragilebtn3 = (Button) view.findViewById(R.id.fragilebtn3); 
            texts4.setText("UNPACKING PRIORITY:" + priorty); 
            text4.setText(label); 

            try { 
             if (fragile.equalsIgnoreCase("Y")) { 

              fragilebtn3.setVisibility(View.VISIBLE); 
             } 
            } catch (Exception e) { 
             e.printStackTrace(); 
            } 

           } 
          } 

         } 


         // } 


        }; 


        page.setReuseBitmap(true); 



        doc.addPage(page); 
       } 





       doc.setRenderWidth(2800); 
       doc.setRenderHeight(3900); 
       doc.setOrientation(PdfDocument.A4_MODE.PORTRAIT); 
       // doc.setProgressTitle(R.string.gen_please_wait); 
       // doc.setProgressMessage(R.string.gen_pdf_file); 
       doc.setFileName(label); 

       doc.setInflateOnMainThread(false); 
       doc.setListener(new PdfDocument.Callback() { 
        @Override 
        public void onComplete(File file) { 
         Log.i(PdfDocument.TAG_PDF_MY_XML, "Complete" + file.getAbsolutePath()); 

         { 

          String[] mailto = {""}; 
          Uri uri = Uri.fromFile(file.getAbsoluteFile()); 
          Intent emailIntent = new Intent(Intent.ACTION_SEND); 
          emailIntent.putExtra(Intent.EXTRA_EMAIL, mailto); 
          emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Label for " + label); 
          emailIntent.putExtra(Intent.EXTRA_TEXT, "By android device"); 
          emailIntent.setType("application/pdf"); 
          emailIntent.putExtra(Intent.EXTRA_STREAM, uri); 
          startActivity(Intent.createChooser(emailIntent, "Send email using:")); 
         } 
        } 

        @Override 
        public void onError() { 
         Log.i(PdfDocument.TAG_PDF_MY_XML, "Error"); 
        } 
       }); 

       try { 
        doc.createPdf(mContext); 
       } 
       catch(Exception e) 
       { 
        e.printStackTrace(); 
       } 



      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 





      } 
     }); 

     home.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       startActivity(new Intent(PrintLabelScreen.this, MainScreen.class)); 


      } 
     }); 

     next.setOnClickListener(new View.OnClickListener() { 
      ProgressDialog mProgressDialog; 

      @Override 
      public void onClick(View v) { 

       //mProgressDialog = ProgressDialog.show(mContext, "", "Loading..."); 





       if(count1>=0&&count1<finallist.size()-1) 


       { 
        count1++; 
        for (int i = 0; i < finallist.size(); i++) { 

         if (i == count1) { 

          favlist = finallist.get(i); 



          list1.setAdapter(null); 
          list2.setAdapter(null); 
          list3.setAdapter(null); 
          list4.setAdapter(null); 
         //labeladapter.notifyDataSetChanged(); 

         new BackgroundProcess().execute(favlist); 



        } 

        } 

       } 
       } 
     }); 

     prev.setOnClickListener(new View.OnClickListener() { 

      // ProgressDialog mProgressDialog; 

      @Override 
      public void onClick(View v) { 

      // Log.d("sublistsize","sublistsize"+ prevcount); 


       Log.d("count1","count2"+count1); 

       Log.d("count1","count2"+finallist.size()); 
       Log.d("prevcount"," prevcount"+count1); 
       if(count1>0 && count1<=finallist.size()) { 
        count1--; 

       for (int i = 0; i < finallist.size(); i++) { 

         if (i == count1) { 


          favlist=finallist.get(i); 
          list1.setAdapter(null); 
          list2.setAdapter(null); 
          list3.setAdapter(null); 
          list4.setAdapter(null); 
          //labeladapter.notifyDataSetChanged(); 
          new BackgroundProcess().execute(favlist); 
         } 
        } 
       } 


      } 
     }); 


    } 

    class BackgroundProcess extends AsyncTask<List<ArrayList<String>>, String, String> { 
     private ProgressDialog progress; 
     List<ArrayList<String>> fine=null; 

     Set<Integer> m1Key; 
     ProgressDialog dialog = new ProgressDialog(PrintLabelScreen.this); 

     @Override 
     protected void onPreExecute() { 

      dialog.setMessage("Loading..."); 
      //show dialog 
      dialog.show(); 

      super.onPreExecute(); 



     } 


     @Override 
     protected String doInBackground(List<ArrayList<String>>... params) { 



try { 
fine= params[0]; 
    Log.d("finesize", "finesize" + fine.size()); 

} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
} 
      //m1Key = m1.keySet(); 

      if (fine.size()!= 0) { 
       return "1"; 
      } 
      else { 
       return "0"; 
      } 
     } 



     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 
      if(dialog != null && dialog.isShowing()){ 
       dialog.dismiss(); 
      } 





      if (result.equalsIgnoreCase("1")) { 


       for (int i = 0; i < fine.size(); i++) { 



        if (i == 0) { 

         if (fine.get(i).size() != 0) { 


          if (fragile.equalsIgnoreCase("Y")) { 
           fragilebtn.setVisibility(View.VISIBLE); 
           fragile = "Y"; 

          } else { 
           fragilebtn.setVisibility(View.GONE); 
           fragile = "N"; 

          } 

         // Log.d("sublistcount", "sublistcount" +fine.get(i)); 
          PrintLabelAdapter labeladapternew = new PrintLabelAdapter(mContext,R.layout.labeitem, 
            fine.get(i)); 


          list1.setAdapter(labeladapternew); 
          labeladapternew.notifyDataSetChanged(); 
list1.invalidateViews(); 

         } 
        } 
     if (i == 1) { 


         if (fine.get(i).size() != 0) { 


          if (fragile.equalsIgnoreCase("Y")) { 
           fragilebtn1.setVisibility(View.VISIBLE); 
           fragile = "Y"; 


          } else { 
           fragilebtn1.setVisibility(View.GONE); 
           fragile = "N"; 

          } 


          PrintLabelAdapter labeladapternew = new PrintLabelAdapter(mContext,R.layout.labeitem, 
            fine.get(i)); 

          //list2.setAdapter(null); 
          list2.setAdapter(labeladapternew); 
          labeladapternew.notifyDataSetChanged(); 

          list2.invalidateViews(); 



         } 

        } 
      if (i == 2) { 


         if (fine.get(i).size() != 0) { 



          if (fragile.equalsIgnoreCase("Y")) { 
           fragilebtn2.setVisibility(View.VISIBLE); 
           fragile = "Y"; 

          } else { 
           fragilebtn2.setVisibility(View.GONE); 
           fragile = "N"; 
          } 



         // Log.d("sublistcount", "sublistcount" +fine.get(i)); 
          PrintLabelAdapter labeladapternew = new PrintLabelAdapter(mContext,R.layout.labeitem, 
            fine.get(i)); 
          // list3.setAdapter(null); 

          list3.setAdapter(labeladapternew); 
          labeladapternew.notifyDataSetChanged(); 

          list3.invalidateViews(); 
         } 
        } 


      if (i == 3) { 

         if (fine.get(i).size() != 0) { 


          if (fragile.equalsIgnoreCase("Y")) { 
           fragilebtn3.setVisibility(View.VISIBLE); 
           fragile = "Y"; 

          } else { 
           fragilebtn3.setVisibility(View.GONE); 
           fragile = "N"; 

          } 

          //list4.setAdapter(null); 

         // Log.d("sublistcount", "sublistcount" +fine.get(i)); 
          PrintLabelAdapter labeladapternew = new PrintLabelAdapter(mContext,R.layout.labeitem, 
            fine.get(i)); 
          list4.setAdapter(labeladapternew); 

          labeladapternew.notifyDataSetChanged(); 
          list4.invalidateViews(); 



         } 

        } 




       } 
      } 

     } 
    } 

    // chops a list into non-view sublists of length L 
    static <T> List<List<T>> chopped(List<T> list, final int L) { 
     List<List<T>> parts = new ArrayList<List<T>>(); 
     final int N = list.size(); 
     for (int i = 0; i < N; i += L) { 
      parts.add(new ArrayList<T>(
          list.subList(i, Math.min(N, i + L))) 
      ); 
     } 
     return parts; 
    } 


} 

編輯

其工作的第一時間,當我按下背部和底部的下一個按鈕,但之後我發送郵件,回來也適用,它不令人耳目一新

+0

確保'data.size()'不是'0(零)'。 –

+0

數據大小是否大於0?你可以請發佈你的listview XML文件或者你使用ListFragment嗎? – user1140237

+0

@DhavalPatel是的,我確認data.size()不是0 – NarendraJi

回答

0

getView沒有被調用,而getCount返回的列表大小爲

看着你的代碼一切都很好。但是,只是爲了讓你意識到,這也可能發生在ListView的可見性或其rootview設置爲GONE的情況下。

0

試試這個

public PrintLabelAdapter(Context context, int layoutResourceId,ArrayList<String> data) { 
    super(); 
    this.layoutResourceId = layoutResourceId; 
    this.context = context; 
    this.data = data; 
    //Log.d("sublistcount", "sublistcount" +data.size()); 
} 

    @Override 
public int getCount() { 

    Log.d("getcount", "getcount" + data.size()); 
    return data.size(); 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    WeatherHolder holder = null; 
    // db=new DatabaseHandler(context); 

    Log.d("getcount", "getcount in getview" + data.size()); 
    final String weather; 
    if (row == null) { 

     Log.d("getcount", "getcount in getviewin row i"); 

     LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
     row = inflater.inflate(layoutResourceId, parent, false); 

     holder = new WeatherHolder(); 
     // holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon); 
     holder.txt = (TextView) row.findViewById(R.id.txt); 

     holder.chk = (CheckBox) row.findViewById(R.id.chk); 

     row.setTag(holder); 
    } else { 

     Log.d("getcount", "getcount in getviewin row i111"); 
     holder = (WeatherHolder) row.getTag(); 
    } 

    weather = data.get(position); 

    holder.txt.setText(weather); 
    // holder.imgIcon.setImageResource(weather.icon); 
    final WeatherHolder finalHolder = holder; 
    holder.chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      if(isChecked){ 
       finalHolder.chk.setButtonDrawable(R.mipmap.checked); 

       //db.updateMovingDay(weather.getTitle(),1); 
      } 
      else 
      { 
       // db.updateMovingDay(weather.getTitle(),0); 
       finalHolder.chk.setButtonDrawable(R.mipmap.uncheck); 

      } 

     } 
    }); 

    return row; 
} 

static class WeatherHolder { 
    ImageView imgIcon; 
    TextView txt; 
    CheckBox chk; 
    } 

} 

通知我改變super()聲明同時適配器擴展baseadapter

希望它有助於Thanks.Refer這裏https://androidruler.wordpress.com/2016/02/21/android-custom-listview-example/

+0

你可以添加一些關於super()而不是params的解釋。很想知道。 ! –

+0

獲取錯誤,無法解析方法super() – NarendraJi

+0

@DroidWormNarendra是否使用BaseAdapter擴展適配器類。當我按下背部和底部處下一個按鈕,但之後我發送郵件,回來 –

0

這裏是我的XML

主要佈局

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.lokesh.myapplication.TestClass"> 


<ListView 
    android:id="@+id/lv_test" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

</ListView> 
</LinearLayout> 

item_list.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:id="@+id/txt" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 
<CheckBox 
    android:id="@+id/chk" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 
</LinearLayout> 

這裏是正在調用主類。

public class TestClass extends AppCompatActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.gridview_main); 


    ListView ls = (ListView)findViewById(R.id.lv_test); 
    ArrayList<String> hit = new ArrayList<>(); 
    hit.add("DONE"); 
    hit.add("DONE"); 
    hit.add("DONE"); 
    hit.add("DONE"); 
    hit.add("DONE"); 
    hit.add("DONE"); 
    hit.add("DONE"); 
    PrintLabelAdapter adapter = new   
    PrintLabelAdapter(this,R.layout.item_list,hit); 
    ls.setAdapter(adapter); 

} 
} 

這裏是你的適配器沒有改變

public class PrintLabelAdapter extends ArrayAdapter { 


int layoutResourceId; 
Context context; 
ArrayList<String> data; 

public PrintLabelAdapter(Context context, int layoutResourceId, ArrayList<String> data) { 
    super(context, layoutResourceId, data); 
    this.layoutResourceId = layoutResourceId; 
    this.context = context; 
    this.data = data; 
    //Log.d("sublistcount", "sublistcount" +data.size()); 
} 

@Override 
public int getCount() { 

    Log.d("getcount", "getcount" + data.size()); 
    return data.size(); 
} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    WeatherHolder holder = null; 
    // db=new DatabaseHandler(context); 

    Log.d("getcount", "getcount in getview" + data.size()); 
    final String weather; 
    if (row == null) { 

     Log.d("getcount", "getcount in getviewin row i"); 

     LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
     row = inflater.inflate(layoutResourceId, parent, false); 

     holder = new WeatherHolder(); 
     // holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon); 
     holder.txt = (TextView) row.findViewById(R.id.txt); 

     holder.chk = (CheckBox) row.findViewById(R.id.chk); 

     row.setTag(holder); 
    } else { 

     Log.d("getcount", "getcount in getviewin row i111"); 
     holder = (WeatherHolder) row.getTag(); 
    } 

    weather = data.get(position); 

    holder.txt.setText(weather); 
    // holder.imgIcon.setImageResource(weather.icon); 
    final WeatherHolder finalHolder = holder; 
    holder.chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      if (isChecked) { 
       //finalHolder.chk.setButtonDrawable(R.mipmap.checked); 

       //db.updateMovingDay(weather.getTitle(),1); 
      } else { 
       // db.updateMovingDay(weather.getTitle(),0); 
       //finalHolder.chk.setButtonDrawable(R.mipmap.uncheck); 

      } 

     } 
    }); 

    return row; 
} 

static class WeatherHolder { 
    TextView txt; 
    CheckBox chk; 
    } 
} 
+0

相同的適配器第一次正常工作。但在某些情況下不起作用,即從按鈕點擊並返回後發送郵件。 – NarendraJi

相關問題