2011-12-21 8 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で2つの列を持っています。

PROJECTION_COLUMNSVIEW_MAPPINGSの例はほとんど見つかりませんでしたが、正しく使用する方法はわかりません。ここで

は、完全なコードであることが取り組んでいるが、私は、リストビュー(テキスト1)における{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

+0

はsimpleadapterでarrayadapter置き換えるしようとしましたが、クラッシュを得た: '(スーパー(新しいSimpleAdapter( \t \t \t \t ReadChat.this、 \t \t \t \tアイテム、 \t \t \t \t R.layout.row、 新しいString [] { "TEST1"、 "TEST2"}、 新しいINT [] {R.id.text1、R.id.text2 })); ' – Dikobraz

答えて

2

あなたの問題はEndlessAdapterとは何の関係もありません。

最初にArrayAdapterで作業するコードを取得してください。現在はEndlessAdapterは無視されています。これにより、ArrayAdapterというカスタムを作成する方法を学ぶ必要があります。ArrayAdapterは、HashMap<String, String>の使い方についてほとんど分かりません。 ArrayAdapterを自分のWhateverThisIsAdapterに拡張する必要があります。getView()をオーバーライドしてHashMap<String, String>から膨らんだ行にデータを流し込み、行のリサイクルを適切に処理します。 This free excerptからone of my booksは、これのいくつかを示します。

次に、ArrayAdapterEndlessAdapterにラップしてください。

また、ほとんどのAndroid搭載端末では、ハードワイヤパスはありません。/sdcardは間違っています。

+0

カスタム広告を使用しているときにコードがスタックオーバーフローエラーを出していますアペッター – Sameer

関連する問題