2016-10-28 6 views
-1

seine meine codes für daten vom server und zeige sie in listview in der ersten laden, listview zeige 10 einzelteile und ich ging, wenn click mehr taste seine 10 neue artikel zu listen und 20 einzelteile anzeigen wie geht es ??füge neue Einträge zu listview in click button hinzu

seine mein Codes mein Problem ist, wenn seine mehr Schaltfläche neue 10 zeigen klicken Artikel und alte Artikel verpasst, wie es beheben

public class Main extends ListActivity { 

String[] id,name,content,commentcount,purl,views; 
String tid,tname,tcontent,tcomment,tpurl,tviews; 

private int count; 
private int cpage=1; 
private double apage; 
private String res=""; 
private ImageView more; 
private Bitmap[] img; 

public static String url="http:..."; 
private ProgressDialog pr; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);   

    more=(ImageView) findViewById(R.id.main_next_page); 
    new getpost().execute();   

    more.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      if(cpage==apage){     
      }else{     
       cpage++; 
       new getpost().execute();      
      }    
     } 
    });  
}  

@Override 
protected void onListItemClick(ListView l, View v, int position, long idt) {   
    Intent i=new Intent(Main.this,post.class); 
    i.putExtra("id",Integer.parseInt(id[position])); 
    startActivity(i);  
}  

private void makearray(int c){ 

    id=new String[c]; 
    name=new String[c]; 
    content=new String[c]; 
    commentcount=new String[c]; 
    purl=new String[c]; 
    views=new String[c]; 
    img=new Bitmap[c]; 
    Arrays.fill(name, ""); 

    Bitmap temp=BitmapFactory.decodeResource(getResources(), R.drawable.a); 
    Arrays.fill(img, temp);  
} 

/////////////////////////////////get data from server////////////////////////////// 
public class getpost extends AsyncTask{  

    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 

     pr=ProgressDialog.show(Main.this, "wait..."); 
     more.setVisibility(View.INVISIBLE);   
    } 

    @Override 
    protected Object doInBackground(Object... arg0) { 
     // TODO Auto-generated method stub   

     try{ 
      String data=URLEncoder.encode("page","utf8")+"="+URLEncoder.encode(cpage+"","utf8"); 

      URL link=new URL(url+"get_list_post.php"); 
      URLConnection connect=link.openConnection();     

      //send data 
      connect.setDoOutput(true); 
      OutputStreamWriter wr=new OutputStreamWriter(connect.getOutputStream()); 
      wr.write(data); 
      wr.flush(); 

      BufferedReader reader=new BufferedReader(new InputStreamReader(connect.getInputStream())); 

      StringBuilder sb=new StringBuilder();    
      String line=null; 

      while((line=reader.readLine()) != null){      
       sb.append(line);      
      }       

      res=sb.toString();    

      for(int y=0;y<4;y++){ 
       if(res.charAt(y)=='☻'){ 
        count=Integer.parseInt(res.substring(0, y)); 
        res=res.substring(y+1); 
        break; 
       } 
      } 

      for(int y=0;y<4;y++){ 
       if(res.charAt(y)=='☻'){ 
        apage=Integer.parseInt(res.substring(0, y)); 
        res=res.substring(y+1); 
        break; 
       } 
      } 
      makearray(count);   

      int f=0,c=0; 

      for(int i=0;i<res.length();i++){ 
       if(res.charAt(i)=='☻'){ 
        String temp=res.substring(f,i); 

        if(c==0){       
         tid=temp;       
        } 
        if(c==1){       
         tname=temp;       
        } 
        if(c==2){       
         tcontent=temp;       
        } 
        if(c==3){       
         tcomment=temp;       
        } 
        if(c==4){       
         tviews=temp;        
        } 
        if(c==5){       
         tpurl=temp;       

         for(int t=0;t<count;t++){ 
          if(name[t].equals("")){ 
           id[t]=tid; 
           name[t]=tname; 
           content[t]=tcontent; 
           commentcount[t]=tcomment; 
           purl[t]=tpurl; 
           views[t]=tviews; 
           new getimage(tpurl,t).execute(); 
           break; 
          } 
         } 
         c=-1; 
        } 

        f=i+1; 
        c+=1; 
       } 
      }    
     }catch(Exception e){     
      res=e.toString();    
     } 

     return ""; 
    }  

    @Override 
    protected void onPostExecute(Object result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result);    

     if(res.substring(0, 2).toString().equals("ja") || res.substring(0, 2).toString().equals("<b")){ 

      Toast.makeText(getApplicationContext(), "conection failed", Toast.LENGTH_LONG).show(); 
      pr.dismiss(); 

     }else{    
      apage= Math.ceil(apage/10); 

      pr.dismiss(); 
      more.setVisibility(View.VISIBLE); 

      setListAdapter(new IA());    
     }   
    }  
} 

public class getimage extends AsyncTask<String,Void,Bitmap>{ 

    private String url; 
    private int p; 
    public getimage(String u,int P){ 

     url=u; 
     p=P; 
    }  

    @Override 
    protected Bitmap doInBackground(String... arg0) { 
     // TODO Auto-generated method stub 

     Bitmap temp=null; 

     try{     
      InputStream in=new java.net.URL(url).openStream(); 
      temp=BitmapFactory.decodeStream(in); 

     }catch(Exception e){    
     } 

     return temp; 
    }  

    protected void onPostExecute(Bitmap result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 
     if(result != null){ 
      img[p]=result; 
     } 
     if(p==0 || p==1 || p==2 || p==3){ 

      setListAdapter(new IA()); 
     }   
    }  
} 

///////////////////////////////fill list//////////////////////////////////////// 
class IA extends ArrayAdapter<String>{ 

    public IA() { 
     super(Main.this, R.layout.row_main,name);   
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) {      
     LayoutInflater in=getLayoutInflater(); 
     View row=in.inflate(R.layout.row_main, parent,false); 

     TextView titr=(TextView) row.findViewById(R.id.row_main_titr); 
     TextView matn=(TextView) row.findViewById(R.id.row_main_content); 
     TextView extra=(TextView) row.findViewById(R.id.row_main_extra); 
     ImageView image=(ImageView) row.findViewById(R.id.row_main_image); 

     ViewGroup.LayoutParams paramsi = image.getLayoutParams(); 
     paramsi.height= (W/2)-10; 
     image.setLayoutParams(paramsi);   

     image.setImageBitmap(img[position]);    
     titr.setTextSize((float)W/30);   
     titr.setText(name[position]); 
     matn.setText(Html.fromHtml(content[position]).toString().replace("•", "\n")); 
     extra.setText("comments: "+commentcount[position] +" "+"views:"+views[position]); 
     titr.setTypeface(yekan); 

     matn.setTypeface(yekan); 
     extra.setTypeface(Main.koodak);   

     return (row); 
    }  
} 

Antwort

0

Das Problem ist Ihr setListAdapter weil ihr Argument immer eine neue istance der Klasse IA ().

Sie müssen Ihren ListView, Ihren Adapter und Ihre ArrayList einmal am Anfang in onCreate() erstellen und dann den Adapter einmal so einstellen: listView.setAdapter (adapter); Danach können Sie jede gewünschte Asynctask oder einen neuen Thread aufrufen, um neue Daten zu erhalten und sie zur vorhandenen Arraylist hinzuzufügen. Rufen Sie dann adapter.notifyDataSetChanged() auf.

+0

tnx viel für thansanswer hast du eny beispiel in diesem fall ?? –

+0

Etwas ähnliches, das Sie auf https://github.com/alessandroargentieri/CustomListViewExample Ihrem speziellen Fall anpassen können –

Verwandte Themen