2011-12-21 57 views
2

如何使用ArrayAdapter-HashMap-与EndlessAdapter类?ArrayAdapter <HashMap<,,>>与commonsguy EndlessAdapter类

class DemoAdapter extends EndlessAdapter { 
     private RotateAnimation rotate=null; 

     @SuppressWarnings("unchecked") 
     ArrayAdapter<HashMap<String,String>> a=(ArrayAdapter<HashMap<String,String>>)getWrappedAdapter(); 

     DemoAdapter(ArrayList<HashMap<String, String>> items) { 
     super(new ArrayAdapter<HashMap<String, String>>(Base.this, 
              R.layout.row, 
              android.R.id.text1, <------ ???? 
              items)); <------ ???? 

我有我行R.layout.text1和R.layout.text2两列。

我看到几个例子PROJECTION_COLUMNSVIEW_MAPPINGS,但不知道如何正确使用它。

下面是完整的代码,它的工作,但我得到的列表视图(文本)类似{test2的= dasdasd,TEST1 = asdasd}:

import com.commonsware.cwac.endless.EndlessAdapter; 

import java.util.ArrayList; 
import java.util.HashMap; 

public class Read extends ListActivity { 

     EndlessAdapter x; 
     SQLiteDatabase Db;  
     public Cursor c; 
     Integer cx; 

     String Hash; 

     @Override 
     public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.readmain); 

     Hash = getIntent().getStringExtra("Hash"); 
     cx = getIntent().getIntExtra("Count", 0); 

     Db = openOrCreateDatabase("/sdcard/test.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); 

     ArrayList<HashMap<String,String>> items=new ArrayList<HashMap<String,String>>(); 

     x = new DemoAdapter(items); 
     setListAdapter(x); 
     } 


     class DemoAdapter extends EndlessAdapter { 
     private RotateAnimation rotate=null; 

     @SuppressWarnings("unchecked") 
     ArrayAdapter<HashMap<String,String>> a=(ArrayAdapter<HashMap<String,String>>)getWrappedAdapter(); 


      DemoAdapter(ArrayList<HashMap<String, String>> items) { 


      super(new ArrayAdapter<HashMap<String, String>>(ReadChat.this, 
              R.layout.row, 
              R.id.textas1, 
              items)); 

      rotate=new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 
             0.5f, Animation.RELATIVE_TO_SELF, 
             0.5f); 
      rotate.setDuration(600); 
      rotate.setRepeatMode(Animation.RESTART); 
      rotate.setRepeatCount(Animation.INFINITE); 
     } 

     @Override 
     protected View getPendingView(ViewGroup parent) { 
      View row=getLayoutInflater().inflate(R.layout.row, null); 

      View child=row.findViewById(R.id.textas1); 

      child.setVisibility(View.GONE); 

      child=row.findViewById(R.id.throbber); 
      child.setVisibility(View.VISIBLE); 
      child.startAnimation(rotate); 

      return(row); 
     } 

     @Override 
     protected boolean cacheInBackground() { 
      c = Db.rawQuery("SELECT a, b FROM TableLIMIT "+a.getCount()+", 15",null); 

      return(getWrappedAdapter().getCount()< cx); 
     } 

     @Override 
     protected void appendCachedData() { 

      String a; 
       String b; 

      if (c != null) { 
       if (c.moveToFirst()) { 
         do { 
          a = c.getString(c.getColumnIndex("a")); 
          b = c.getString(c.getColumnIndex("b")); 

          HashMap<String, String> temp = new HashMap<String, String>();       
           temp.put("test1", a); 
           temp.put("test2", b);       
           a.add(temp); 

        } while (c.moveToNext()); 
       } 
      } 
     } 
     } 
    } 
+0

检查这个博客http://www.vogella.de/articles/AndroidListView/article.html – Pratik 2011-12-21 10:23:26

+0

试图与simpleadapter更换arrayadapter但得到崩溃:'(超(新SimpleAdapter( \t \t \t \t ReadChat.this, \t \t \t \t物品, \t \t \t \t R.layout.row, 新的String [] { “测试1”, “TEST2”}, 新INT [] {R.id.text1,R.id.text2 }));' – Dikobraz 2011-12-21 11:28:49

回答

2

你的问题都无关EndlessAdapter

首先,让你的代码与ArrayAdapter工作,现在忽略EndlessAdapter。这将要求您学习如何创建自定义ArrayAdapter,因为您很快就会发现ArrayAdapter对如何使用HashMap<String, String>知之甚少。您将需要扩展ArrayAdapter你自己WhateverThisIsAdapter,在那里你重写getView()处理来自您的HashMap<String, String>浇数据到膨胀行,妥善处理你的行回收。 This free excerptone of my books将演示这一些。

那时,只有到那时,在EndlessAdapter换工作ArrayAdapter

另外,不要硬线路径,为/sdcard是错误的大多数Android设备上。

+0

您的代码在使用我的自定义广告时给出堆栈溢出错误更易 – Sameer 2012-04-13 13:08:45

相关问题