我有一個由ListView和標籤組成的佈局。看看下面的圖片。基於列表項點擊設置文本
我在一個單獨的java文件使用基本適配器來實現列表視圖。 任何人都可以建議我如何設置文本到列表項上的單擊標籤?
編輯:
標籤的文本應該是點擊列表項的數量。 假設我在列表項點擊一個按鈕,標籤應設置爲1。 同樣,在接下來的嘗試,如果我點擊另一個列表項的按鈕應該設置爲2等..上..
我有一個由ListView和標籤組成的佈局。看看下面的圖片。基於列表項點擊設置文本
我在一個單獨的java文件使用基本適配器來實現列表視圖。 任何人都可以建議我如何設置文本到列表項上的單擊標籤?
編輯:
標籤的文本應該是點擊列表項的數量。 假設我在列表項點擊一個按鈕,標籤應設置爲1。 同樣,在接下來的嘗試,如果我點擊另一個列表項的按鈕應該設置爲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的在活動將被更新! 我希望它有幫助。
嘿,我收到編譯時錯誤說GridActivity不能解析成一個類型,當我嘗試((GridActivity)續).updateValueTextView(1); 。你確定我們可以用這種方式調用updateValueTextView()嗎? –
是的,我確定。確保你將上下文傳遞給適配器,而不是活動。 –
@G_S Dhara的評論是不正確的(儘管她的回答是正確的)。你_要傳遞適配器'this'或'GridActivity.this'。使用'getBaseContext()'或'getApplicationContext()'傳遞上下文將不起作用,因爲您需要將'mContext'上傳到'GridActivity'以調用'GridActivity#updateValueTextView()'。你看到的錯誤不是因爲這個。你應該弄清楚爲什麼你的IDE不能解決'GridActivity'。嘗試使用完全合格的類名..... – Vikram
在您的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));
}
我的自定義適配器代碼位於一個文件中,實際活動位於另一個文件中。你認爲在我的自定義適配器中可以訪問使用textview(它在我的活動中)嗎? –
您應該在「Activity」中將適配器的引用保留爲成員變量。這樣,在'onItemClick'中,你可以簡單地調用類似'mAdapter.getItem(position)'的東西。這將返回支持您的適配器的數據集中給定位置的對象(通常是ArrayList)。 –
你能否看到最新的問題。 –
只是OnItemClickListener
在ListView
然後在onClick
你會得到一個價值arg2
哪個是哪個被點擊項目的position
。
剛剛得到來自你所顯示ListView
並顯示在ArrayList
該值...
希望這是你需要什麼,如果我沒有誤解你的問題。
我的答案重複。 –
Dude我不這麼認爲。你和我的解釋有很大的區別,我不認爲我在我的解釋中的任何地方都使用了adapter.getItem(int position)。 –
「只需從顯示ListView的ArrayList中獲取該值並顯示它」 - 在適配器上調用'getItem(int)'是正確的方法。 –
試試這個代碼
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);
}
});
另一個... –
我的自定義適配器代碼位於一個文件中,實際活動位於另一個文件中。你認爲在我的自定義適配器中可以使用textview1(它在我的活動中)嗎? –
在onListItemClick
呼叫list.getItemAtPosition(position)
檢索項文本
那麼該文本設置爲textview1.setText(listText)
。
我的答案的另一個重複。 –
我的自定義適配器代碼位於一個文件中,實際活動位於另一個文件中。你認爲在我的自定義適配器中可以使用textview1(它在我的活動中)嗎? –
是的,它可以從其他活動訪問。取決於你想做什麼 – AnAndroid
首先實現您的onItemClickListener,您將在其中獲得int arg2參數,這是位置,因此可以獲得該位置,然後在下面執行任何操作。
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
LABLE.setText(""+arg2);
}
});
我正在使用擴展baseadapter和覆蓋getView()的類。 在getview()我有一個按鈕,我正在處理onclick事件。 標籤在活動中。我不認爲標籤可以在自定義適配器類中訪問。 –
檢查這個代碼
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);
}
}
我在一個customadapter Ameer中擁有我的整個邏輯。我很難回到列表活動 –
是你要設置的標籤到任何文本點擊列表項有? – Peshal
沒有。我有不同的邏輯來爲標籤設置文本。 –
你有什麼試過,你的問題到底在哪裏?您是否在每個convertView中使用OnItemClickListener或按鈕? –