2011-12-06 25 views
2

我現在用simplecursoradapter來從數據庫中獲取數據有一個ListView和我查詢從數據庫的鏈接,並將其列表中的每一行分配給一個按鈕和我重寫simplecursoradapter類來設置按鈕的onclicklistener,但我的代碼不工作,有誰告訴我有什麼問題?如何設置OnClickLitsener到按鈕與覆蓋SimpleCursorAdapter的ListView

這是我的適配器:

public class ChannelAdapter extends SimpleCursorAdapter{ 

    private LayoutInflater mInflater; 
    private List<ChannelPoster> items; 
    private Context mContext; 
    private String dblink; 

    public ChannelAdapter(Context context, int layout, Cursor c, String[] from, 
      int[] to) { 
     super(context, layout, c, from, to); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public View getView(int position,View convertView,ViewGroup par) 
    { 
     ViewHolder holder; 

     if(convertView == null) 
     { 

     convertView = mInflater.inflate(R.layout.channelview, null); 

     holder = new ViewHolder(); 
     holder.image = (ImageView) convertView.findViewById(R.id.poster); 
     holder.text = (TextView) convertView.findViewById(R.id.channel); 
     holder.button = (ImageButton) convertView.findViewById(R.id.douban); 
     convertView.setTag(holder); 

     } 
     else 
     { 
     holder = (ViewHolder) convertView.getTag(); 
     } 

     ChannelPoster tmpN=(ChannelPoster)items.get(position); 

     holder.text.setText(tmpN.getChannel()); 
     holder.image.setImageResource(tmpN.getPoster()); 
     holder.button.setOnClickListener(new ImageButton.OnClickListener() 
     { 
     public void onClick(View v) 
     { 
     // TODO Auto-generated method stub 

      Intent intent = new Intent(); 
      intent.setClass(mContext, Doubanframe.class); 
      Bundle bunde = new Bundle(); 
      bunde.putString("dblink",dblink); 
      intent.putExtras(bunde); 
      mContext.startActivity(intent); 

      } 

     }); 
     return convertView; 
    } 


    private class ViewHolder 
    { 
    ImageView image; 
    TextView text; 
    ImageButton button; 
    } 
    } 

,這是我如何填充ListView:

mDB = new ChannelDB(this); 

     String[] columns = {mDB.KEY_ID, mDB.KEY_POSTER, mDB.KEY_CHANNEL, mDB.KEY_PATH, mDB.KEY_DBLINK}; 
     String table = mDB.channelS_TABLE; 

     c = mDB.getHandle().query(table, columns, null, null, null, null, null); 

     startManagingCursor(c); 

     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
       R.layout.channelview, 
       c, 
       new String[] {mDB.KEY_POSTER, mDB.KEY_CHANNEL, mDB.KEY_DBLINK}, 
       new int[] { R.id.poster, R.id.channel, R.id.douban}); 

     channellist.setAdapter(adapter); 

logcat的

12-06 15:07:01.093: INFO/System.out(1257): debugger has settled (1375) 
12-06 15:07:02.172: DEBUG/dalvikvm(1257): GC freed 884 objects/61568 bytes in 118ms 
12-06 15:07:03.029: DEBUG/Splash(1257): table exist 
12-06 15:07:03.359: WARN/InputManagerService(59): Got RemoteException sending setActive(false) notification to pid 1225 uid 10028 
12-06 15:07:03.903: INFO/ActivityManager(59): Displayed activity com.appkon.hdtvs/.Splash: 7947 ms (total 7947 ms) 
12-06 15:07:04.920: INFO/ActivityManager(59): Starting activity: Intent { cmp=com.appkon.hdtvs/.HDtvs } 
12-06 15:07:06.001: INFO/System.out(1257): resolveUri failed on bad bitmap uri: http://movie.douban.com/subject/5372374/ 
12-06 15:07:06.190: INFO/System.out(1257): resolveUri failed on bad bitmap uri: http://movie.douban.com/subject/3190880/ 
12-06 15:07:06.450: INFO/System.out(1257): resolveUri failed on bad bitmap uri: http://movie.douban.com/subject/3990470/ 
12-06 15:07:06.720: DEBUG/dalvikvm(1257): GC freed 546 objects/27992 bytes in 107ms 
12-06 15:07:06.780: INFO/System.out(1257): resolveUri failed on bad bitmap uri: http://movie.douban.com/subject/4804079/ 
12-06 15:07:06.931: INFO/System.out(1257): resolveUri failed on bad bitmap uri: http://movie.douban.com/subject/6557005/ 
12-06 15:07:07.111: INFO/System.out(1257): resolveUri failed on bad bitmap uri: http://movie.douban.com/subject/4317617/ 
12-06 15:07:07.270: INFO/System.out(1257): resolveUri failed on bad bitmap uri: http://movie.douban.com/subject/6436783/ 
12-06 15:07:07.410: INFO/System.out(1257): resolveUri failed on bad bitmap uri: http://movie.douban.com/subject/2156528/ 
12-06 15:07:07.590: INFO/System.out(1257): resolveUri failed on bad bitmap uri: http://movie.douban.com/subject/6778677/ 
+0

發佈您的logcat –

+0

您是否將Doubanframe活動添加到項目的清單文件中? –

+0

是的,它在清單 – user1083741

回答

0
@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = convertView; 
     if (view == null) 
      view = LayoutInflater.from(DummyListViewProjectActivity.this).inflate(R.layout.list_item, parent, false); 
     TextView tv = (TextView) view.findViewById(R.id.text); 
     tv.setText(adapterItems.get(position)); 
     Button bt = (Button) view.findViewById(R.id.button); 
     bt.setText(adapterItems.get(position)); 
     bt.setTag(adapterItems.get(position)); 
     bt.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Toast.makeText(DummyListViewProjectActivity.this, v.getTag().toString(), Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     return view; 
    } 

它的工作對我來說,做節目用不同的價值敬酒。你可以嘗試沒有持有人只是爲了嘗試。

+0

也是一個按鈕,而不是圖像按鈕之一 –