2011-07-11 7 views
0

テキストと2つのボタンでカスタムリストビューを作成しましたが、私はarraylistとadapterを設定しましたが、リストビューはすべての要素を最後に表示しています。私は3つの要素を追加する場合: "text1"、 "text2"、 "text3"私のlistviewは "text3"、 "text3" "text3"を示しています。最後の要素のみを表示しているAndroidのリストビュー

private ListView lista; 
    private List<Piosenka> listaPiosenek; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    text = (EditText) findViewById(R.id.editText1); 
    lista = (ListView) findViewById(R.id.listView1); 
    lista.setClickable(true);    
} 

public void update_listy() throws MalformedURLException, IOException 
{ 
    final List<Piosenka> listaPiosenek = new ArrayList<Piosenka>(); 

    listaPiosenek.add(new Piosenka("text1")); 
    listaPiosenek.add(new Piosenka("text2")); 
    listaPiosenek.add(new Piosenka("text3")); 

    PiosenkaAdapter adapter = new PiosenkaAdapter(this, listaPiosenek); 

    lista.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View view, int position, long index)    
{ 
      System.out.println("sadsfsf"); 
     } 
    }); 

    lista.setAdapter(adapter); 
} 

編集:PiosenkaAdapterコード

public class PiosenkaAdapter extends BaseAdapter implements OnClickListener { 
private Context context; 

    private List<Piosenka> listapiosenek; 

    public PiosenkaAdapter(Context context, List<Piosenka> listapiosenek) { 
     this.context = context; 
     this.listapiosenek = listapiosenek; 
    } 

    public int getCount() { 
     return listapiosenek.size(); 
    } 

    public Object getItem(int position) { 
     return listapiosenek.get(position); 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup viewGroup) { 
     Piosenka element = listapiosenek.get(position); 
     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.listview_element, null); 
     } 
     TextView tvTytul = (TextView) convertView.findViewById(R.id.tvTytul); 
     tvTytul.setText(Piosenka.getTytul()); 

     Button btnPobierz = (Button) convertView.findViewById(R.id.btnPobierz); 
     btnPobierz.setFocusableInTouchMode(false); 
     btnPobierz.setFocusable(false); 

     btnPobierz.setTag(element); 
     Button btnPlay = (Button) convertView.findViewById(R.id.btnPlay); 
     btnPlay.setFocusableInTouchMode(false); 
     btnPlay.setFocusable(false); 
     btnPlay.setOnClickListener(this); 
     btnPlay.setTag(element); 

     // btnRemove.setId(position); 


     return convertView; 
    } 


    @Override 
    public void onClick(View view) { 
     switch(view.getId()){ 
     case R.id.btnPobierz: 
      Piosenka entry = (Piosenka) view.getTag(); 
      listapiosenek.remove(entry); 
      notifyDataSetChanged(); 
      break; 
     case R.id.btnPlay: 
      entry = (Piosenka) view.getTag(); 
      listapiosenek.remove(entry); 
      notifyDataSetChanged(); 
      break; 
    } 
    } 

}

+0

PiosenkaAdapterのコードを投稿してください。エラーが発生する可能性が最も高いです。 –

答えて

0


lista.setAdapter(adapter); 
adapter.notifyDataSetChanged(); 

はあなたPiosenkaAdapterのコード貼り付けることができます...これを試してみてください?

+0

アダプターの前にリストを作成するときに、notifyDataSetChanged()を送信する必要はありません。 –

+0

PiosenkaAdapterのコードを貼り付けることができますか? –

+0

Didntの仕事。 PiosenkaAdapterコードを追加しました。 – user838775

0

私はあなたの言語を知らないが、Piosenka変数はgetViewメソッド()

Piosenka element = listapiosenek.get(position); 

に正しくフェッチされますが、これは私には奇妙に見える

TextView tvTytul = (TextView) convertView.findViewById(R.id.tvTytul); 
tvTytul.setText(Piosenka.getTytul()); 

Piosenka.getTytul()はstaticとして私には見えます代わりにelement.getTytul()への通常のメソッド呼び出しを行う必要があります。