我有一個列表視圖,它由兩個來自單獨佈局文件的文本視圖組成。我使用BaseAdapter
從JSON文件構建列表。在列表視圖中更改文本視圖的可見性
我想第一個textview(標題)是可點擊的,如果點擊它顯示第二個textview(文本),如果再次點擊它隱藏它。
當我使用onClick
(android:onClick="ClText"
)時出現錯誤。我想我應該使用一些onClickListener
,但由於我是Android新手,我不太清楚如何使用它。
有人可以幫我拿出代碼嗎?
我有一個列表視圖,它由兩個來自單獨佈局文件的文本視圖組成。我使用BaseAdapter
從JSON文件構建列表。在列表視圖中更改文本視圖的可見性
我想第一個textview(標題)是可點擊的,如果點擊它顯示第二個textview(文本),如果再次點擊它隱藏它。
當我使用onClick
(android:onClick="ClText"
)時出現錯誤。我想我應該使用一些onClickListener
,但由於我是Android新手,我不太清楚如何使用它。
有人可以幫我拿出代碼嗎?
你只需要設置onClickListener在您的適配器類的getView方法延伸BaseAdapter的第一個項目。這裏有一個例子來說明你想要做什麼。
public class CustomAdapter extends BaseAdapter{
private ArrayList<Thing> mThingArray;
public CustomAdapter(ArrayList<Thing> thingArray) {
mThingArray = thingArray;
}
// Get the data item associated with the specified position in the data set.
@Override
public Object getItem(int position) {
return thingArray.get(position);
}
// Get a View that displays the data at the specified position in the data set.
// You can either create a View manually or inflate it from an XML layout file.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
// LayoutInflater class is used to instantiate layout XML file into its corresponding View objects.
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.one_of_list, null);
}
TextView captionTextView = (TextView) convertView.findViewById(R.id.caption);
TextView txt2 = (TextView)findViewById(R.id.text);
captionTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(txt2.getVisibility() == View.INVISIBLE){
txt2.setVisibility(View.VISIBLE);
} else {
txt2.setVisibility(View.INVISIBLE);
}
}
});
return convertView;
}
}
這個伎倆!非常感謝! – Tino
很高興能幫到你!不要忘記接受:) – mattgmg1990
下面是關於如何使用與Java點擊收聽一個例子:
TextView txt = (TextView)findViewById(R.id.TextView1);
TextView txt2 = (TextView)findViewById(R.id.TextView2);
txt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txt.setVisibility(View.GONE);
txt2.setVisibility(View.VISIBLE);
}
});
老實說,雖然,而不是改變不同textViews的知名度,你爲什麼不只是改變TextView的文本?這會更簡單,並且不需要多個TextView。
謝謝!我到達那裏:)我必須使用多個文字瀏覽,因爲JSON包含很多與文字匹配的標題。在啓動時,應用程序只需顯示標題,然後點擊匹配的文本即可顯示。 – Tino
如果你只是想在兩個textview之間切換,你可以簡單地使用一個ViewSwitcher。它允許你在視圖之間切換。你只需要調用nextView()方法,並且這種方法是循環的,所以你可以無休止地調用nextView()
你將能夠改變顯示的視圖。
然後你就可以在同一onClickListener添加到這些到TextView的寫是這樣的:
TextView txt = (TextView)findViewById(R.id.TextView1);
txt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewSwitcher.nextView();
}
});
只使用onClickListener的代碼,因爲onclick屬性會導致許多問題 – sam
好了,但後來我怎麼找出正確的看法?由於ListView中的所有視圖都具有相同的ID(mTxtvCaption和mTxtvText),因此我需要它確定已被單擊的正確mTxtvCaption並使右側的mTxtvText可見 – Tino
@Tino,您需要確保爲文本視圖提供唯一的ID 。 –