2013-12-14 31 views
0

我有一個使用ArrayAdapter的ListView,我也實現了getFilter函數在ListView內進行搜索。我正在使用SharedPreference以獲得ListView的索引以顯示有關下一個活動的一些信息。搜索時,如果索引不同,它會導致我的應用顯示錯誤的信息。當在ListView中使用getFilter時,SharedPreference得到錯誤的索引

case 0: 
        tvT = (TextView) findViewById(R.id.txtTitle); 
        strT = tvT.getText().toString(); 
        inPos = strT.indexOf("."); 
        strT = strT.substring(0, inPos); 
        inPos = Integer.valueOf(strT); 
        Toast.makeText(getApplicationContext(), String.valueOf(inPos), 2000).show(); 
        //moveToActivity(String.valueOf(inPos-1)); //0 
        break; 
       case 1: 
        tvT = (TextView) findViewById(R.id.txtTitle); 
        strT = tvT.getText().toString(); 
        inPos = strT.indexOf("."); 
        strT = strT.substring(0, inPos); 
        inPos = Integer.valueOf(strT); 
        Toast.makeText(getApplicationContext(), String.valueOf(inPos), 2000).show(); 
        //moveToActivity("1"); //1 
        break; 
       case 2: 
        tvT = (TextView) findViewById(R.id.txtTitle); 
        strT = tvT.getText().toString(); 
        inPos = strT.indexOf("."); 
        strT = strT.substring(0, inPos); 
        inPos = Integer.valueOf(strT); 
        Toast.makeText(getApplicationContext(), String.valueOf(inPos), 2000).show(); 
        //moveToActivity("2"); //2 
        break; 
       case 3: 
        tvT = (TextView) findViewById(R.id.txtTitle); 
        strT = tvT.getText().toString(); 
        inPos = strT.indexOf("."); 
        strT2 = strT.substring(0, inPos); 
        inPos = Integer.valueOf(strT2); 
        Toast.makeText(getApplicationContext(), strT, 2000).show(); 
        //moveToActivity("3"); //3 
        break; 
       case 4: 
        tvT = (TextView) findViewById(R.id.txtTitle); 
        strT = tvT.getText().toString(); 
        inPos = strT.indexOf("."); 
        strT2 = strT.substring(0, inPos); 
        inPos = Integer.valueOf(strT2); 
        Toast.makeText(getApplicationContext(), String.valueOf(inPos), 2000).show(); 
        //moveToActivity("4"); //4 
        break; 


public void moveToActivity(String strWhich) { 
     editor.putString("NamePosition", strWhich); 
     editor.commit(); 
     Intent myIntent = new Intent(MainActivity.this, NameDisplay.class); 
     startActivityForResult(myIntent, 0); 
     overridePendingTransition(R.anim.right_slide_in, R.anim.right_slide_out); 
    } 

樣品我的活動:

enter image description here

case 0代碼工作,除了case 1case 2並依此類推,直到case 99這是1相同INPOS如何讓這個不管位置是什麼,索引號碼總是保持不變?

回答

0

我修好了以下內容:

String check = String.valueOf(dataList.getItemAtPosition(position)); 
int pos = check.indexOf("."); 
int pos2 = check.indexOf(" "); 
String strP = check.substring(pos2+1, pos); 
int pos3 = Integer.valueOf(strP) - 1; 

switch(position) { 
    case 0: 
    Log.i("pos", String.valueOf(pos)); 
    Log.i("pos2", String.valueOf(pos2)); 
    Log.i("strP", strP); 
    Log.i("check", check); 
    moveToActivity(String.valueOf(pos3)); //0 
    break; 
    case 1: 
     moveToActivity(String.valueOf(pos3)); //1 
     break; 
    case 2: 
     moveToActivity(String.valueOf(pos3)); //2 
     break; 
    case 3: 
     moveToActivity(String.valueOf(pos3)); //3 
     break; 
} 
+0

我實際上擺脫了整個'Switch'的情況,它工作正常。 – Si8

0

而是假設每個元素都會有哪個位置,你有兩個選擇:

  1. 使用adapter.getItem(position)和工作從那裏。
  2. 實施adapter.getItemId(position)和開關代替位置項目的ID,(您的適配器將必須實現getItemId(int position)
+0

我試圖提取'title',但無論選擇哪一個,它總是返回第一個 如果在搜索它時改變位置,'getItem(position)'將如何工作?似乎只有硬編碼的數字可以工作,但它一旦失去了數值搜索會導致索引更改:/ – Si8

+0

getItem (職位)(即使報告的職位是1)不會給你正確的項目?然後你的代碼必須修改'位置' –

相關問題