2013-10-03 22 views
0

我有一個由ListView和標籤組成的佈局。看看下面的圖片。基於列表項點擊設置文本

enter image description here

我在一個單獨的java文件使用基本適配器來實現列表視圖。 任何人都可以建議我如何設置文本到列表項上的單擊標籤?

編輯:

標籤的文本應該是點擊列表項的數量。 假設我在列表項點擊一個按鈕,標籤應設置爲1。 同樣,在接下來的嘗試,如果我點擊另一個列表項的按鈕應該設置爲2等..上..

+0

是你要設置的標籤到任何文本點擊列表項有? – Peshal

+0

沒有。我有不同的邏輯來爲標籤設置文本。 –

+0

你有什麼試過,你的問題到底在哪裏?您是否在每個convertView中使用OnItemClickListener或按鈕? –

回答

2

爵士,

你說的這是什麼,你有你在一個類中的適配器,而在另一個文件中的活動。那麼你可以做到這一點,以更新textview。

通過上下文的活動,如果其在適配器正在維護計數然後一旦計數已經更新,

那麼,假設你在活動中有這樣的方法

public void updateTextView(int count) { 
    // enter your code here to set the count in the textview 
} 

從baseAdapter這樣調用上面的方法:

if(mContext != null) { 
    ((YourActivity)mContext).updateTextView(mCount); 
} 

和TextView的在活動將被更新! 我希望它有幫助。

+0

嘿,我收到編譯時錯誤說GridActivity不能解析成一個類型,當我嘗試((GridActivity)續).updateValueTextView(1); 。你確定我們可以用這種方式調用updateValueTextView()嗎? –

+0

是的,我確定。確保你將上下文傳遞給適配器,而不是活動。 –

+1

@G_S Dhara的評論是不正確的(儘管她的回答是正確的)。你_要傳遞適配器'this'或'GridActivity.this'。使用'getBaseContext()'或'getApplicationContext()'傳遞上下文將不起作用,因爲您需要將'mContext'上傳到'GridActivity'以調用'GridActivity#updateValueTextView()'。你看到的錯誤不是因爲這個。你應該弄清楚爲什麼你的IDE不能解決'GridActivity'。嘗試使用完全合格的類名..... – Vikram

2

在您的OnItemClickListener調用adapter.getItem(int position)中,從支持您的BaseAdapter的收集中檢索對象。從那裏,你應該能夠檢索你需要的任何字段。

編輯:

您編輯清除了問題。更新答案:

private int mCounter = 0; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // ListView listView = getYourListView(); 
    listView.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      mCounter++; 
      updateTextView(); 
     } 
    }); 

    if(savedInstanceState != null) { 
     mCounter = savedInstanceState.getInt("counter", 0); 
    } 

    updateTextView(); 
} 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 

    outState.putInt("counter", mCounter); 
} 

private void updateTextView() { 
    // TextView textView = getYourTextView(); 
    textView.setText(String.valueOf(mCounter)); 
} 
+0

我的自定義適配器代碼位於一個文件中,實際活動位於另一個文件中。你認爲在我的自定義適配器中可以訪問使用textview(它在我的活動中)嗎? –

+0

您應該在「Activity」中將適配器的引用保留爲成員變量。這樣,在'onItemClick'中,你可以簡單地調用類似'mAdapter.getItem(position)'的東西。這將返回支持您的適配器的數據集中給定位置的對象(通常是ArrayList)。 –

+0

你能否看到最新的問題。 –

1

只是OnItemClickListenerListView然後在onClick你會得到一個價值arg2哪個是哪個被點擊項目的position

剛剛得到來自你所顯示ListView並顯示在ArrayList該值...

希望這是你需要什麼,如果我沒有誤解你的問題。

+0

我的答案重複。 –

+0

Dude我不這麼認爲。你和我的解釋有很大的區別,我不認爲我在我的解釋中的任何地方都使用了adapter.getItem(int position)。 –

+0

「只需從顯示ListView的ArrayList中獲取該值並顯示它」 - 在適配器上調用'getItem(int)'是正確的方法。 –

0

試試這個代碼

listview.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
      String itemText=(String) arg0.getItemAtPosition(arg2); 
      yourLable.setText(itemText); 

     } 
    }); 
+0

另一個... –

+0

我的自定義適配器代碼位於一個文件中,實際活動位於另一個文件中。你認爲在我的自定義適配器中可以使用textview1(它在我的活動中)嗎? –

0

onListItemClick呼叫list.getItemAtPosition(position)檢索項文本

那麼該文本設置爲textview1.setText(listText)

+0

我的答案的另一個重複。 –

+0

我的自定義適配器代碼位於一個文件中,實際活動位於另一個文件中。你認爲在我的自定義適配器中可以使用textview1(它在我的活動中)嗎? –

+0

是的,它可以從其他活動訪問。取決於你想做什麼 – AnAndroid

0

首先實現您的onItemClickListener,您將在其中獲得int arg2參數,這是位置,因此可以獲得該位置,然後在下面執行任何操作。

list.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 

       LABLE.setText(""+arg2); 

      } 
     }); 
+0

我正在使用擴展baseadapter和覆蓋getView()的類。 在getview()我有一個按鈕,我正在處理onclick事件。 標籤在活動中。我不認爲標籤可以在自定義適配器類中訪問。 –

0

檢查這個代碼

public class ListA extends ListActivity { 
private TextView selection; 
private static final String[] items={"Item 1", "Item 2", "Item 3"}; 
@Override 
public void onCreate(Bundle icicle) { 
super.onCreate(icicle); 
setContentView(R.layout.activity_list); 
setListAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, 
       items)); 
selection=(TextView)findViewById(R.id.selection); 
} 
@Override 
public void onListItemClick(ListView parent, View v, int position, 
          long id) { 
selection.setText(position); 
} 
} 
+0

我在一個customadapter Ameer中擁有我的整個邏輯。我很難回到列表活動 –

相關問題