2016-05-05 8 views
0

Ich habe eine Listenansicht, die Elemente aus der Datenbank abgerufen zeigt. Jedes Element in der Listenansicht hat eine Schaltfläche zum Teilen, mit der der Benutzer die Informationen teilen kann. Wenn ich jedoch auf die Schaltfläche zum Teilen klicke, weicht die angezeigte Information von dem Element ab, auf das ich geklickt habe. Und egal, auf welchen Gegenstand ich klicke, es wird Informationen über die ersten Gegenstände erhalten.Falsche Daten aus Element in der ListView-Taste "Share" Android

Zum Beispiel auf Element klicken N 2 würden Informationen von Punkt N 3. Mit anderen Worten angezeigt werden, unabhängig davon, welche Artikel ich klicken, wird es falsche Informationen werden angezeigt wird. Mache ich hier etwas falsch?

** Die Listenansicht zeigt Elemente fehlerfrei an.

Adapter.java

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    // convert view = design 
    View v = convertView; 

    if(convertView==null){ 

    v = vi.inflate(Resource, null); 
    holder = new ViewHolder(); 

    holder.titre = (TextView) v.findViewById(R.id.titre); 
    holder.artist = (TextView) v.findViewById(R.id.artist); 
    holder.imageview = (ImageView) v.findViewById(R.id.urlImage); 
    v.setTag(holder);  


     } 

    else 

     holder=(ViewHolder)v.getTag(); 
     holder.titre.setText(mediaList.get(position).getTitre()); 
     holder.artist.setText(mediaList.get(position).getArtist()); 
     imageLoader.DisplayImage(mediaList.get(position).getUrl(), loader, holder.imageview); 


     Button button = (Button) v.findViewById(R.id.btnOne); 
     //holder=(ViewHolder)v.getTag(); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //holder=(ViewHolder)v.getTag(); 
       //v.setTag(holder); 
       //onShareItem(v); 
       v.getTag(); 


       Drawable mDrawable = holder.imageview.getDrawable(); 
       Bitmap mBitmap = ((BitmapDrawable)mDrawable).getBitmap(); 

       Intent sharingIntent = new Intent(Intent.ACTION_SEND); 

       sharingIntent.setType("image/png"); 

       ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 

       mBitmap.compress(Bitmap.CompressFormat.PNG, 1, bytes); 

       String path = Images.Media.insertImage(context.getContentResolver(), 
          mBitmap, "Image Description", null); 

       Uri imageUri = Uri.parse(path); 
       sharingIntent.putExtra(Intent.EXTRA_STREAM, imageUri); 
       sharingIntent.setType("image/*"); 

       sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(sharingIntent); 


      } 



     }); 
     v.setTag(holder); 

     return v; 





} 
+0

die Share-Taste auf Inhaber hinzufügen, wie andere Steuerelemente "titre, Künstler, Imageview" und erneut versuchen. – Sabari

+0

holder.button \t = (Schaltfläche) v.findViewById (R.id.btnOne); ==================== aber das Problem noch – hinata

+0

bestehen Wenn Sie nichts dagegen haben, könnten Sie bitte Ihr Projekt mit mir teilen? – Sabari

Antwort

0

Lösung

@Override 
public int getCount() { 
    return mediaList.size(); 
} // 
@Override 
public Media getItem(int position) { 
    return mediaList.get(position); 
} 
@Override 
public long getItemId(int position) { 
    return position; 
} 

public View getView(final int position, View view, ViewGroup parent) { 
    final ViewHolder holder; 
    int loader = R.drawable.ic_launcher; 
    if (view == null) { 
     holder = new ViewHolder(); 
     view = vi.inflate(R.layout.row, null); 

     holder.imageview = (ImageView) view.findViewById(R.id.urlImage); 

     holder.titre = (TextView) view.findViewById(R.id.titre); 

     holder.artist = (TextView) view.findViewById(R.id.artist); 

     holder.button1 = (Button) view.findViewById(R.id.btnOne); 
     holder.button2 = (Button) view.findViewById(R.id.btnOne); 
     view.setTag(holder); 

    }else{ 
     holder = (ViewHolder) view.getTag();  
    } 
    imageLoader.DisplayImage(mediaList.get(position).getUrl(), loader, holder.imageview); 
    holder.titre.setText(mediaList.get(position).getTitre()); 
    holder.artist.setText(mediaList.get(position).getArtist()); 
    holder.button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) {        

       //holder=(ViewHolder)v.getTag(); 
       v.setTag(holder); 
       //onShareItem(v); 
       int i= (int) getItemId(position); 
       v.getTag(i); 
       // v.getTag(holder); 

       //partager ***************************************** 

       Drawable mDrawable = holder.imageview.getDrawable(); 
       Bitmap mBitmap = ((BitmapDrawable)mDrawable).getBitmap(); 

       Intent sharingIntent = new Intent(Intent.ACTION_SEND); 

       sharingIntent.setType("image/png"); 

       ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 

       mBitmap.compress(Bitmap.CompressFormat.PNG, 1, bytes); 

       String path = Images.Media.insertImage(context.getContentResolver(), 
          mBitmap, "Image Description", null); 

       Uri imageUri = Uri.parse(path); 
       sharingIntent.putExtra(Intent.EXTRA_STREAM, imageUri); 
       sharingIntent.setType("image/*"); 

       sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(sharingIntent); 
      /////::::::::::::::::::::::::::::::::::::::::::: 

     }        
    });   



    return view; 
} 
Verwandte Themen