Gdy miałem problemy z naprawieniem pozycji mojej listy Wyświetl elementy zgodnie z zamierzonym intencją po odfiltrowaniu, a otrzymałem informacje, że mogę zastąpić problem za pomocą niestandardowego adaptera, zrobiłem to, ale nie wiedzieć, jak przypisać kliknięcia do poszczególnych pozycji, sprawdź poniższy kod:Ustaw opcję Dodaj do niestandardowego adaptera ListView
public class IndexPageActivity extends Activity {
ListView listView;
EditText editTextB;
@Override
protected void onCreate(Bundle savfedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.indexpage);
listView = (ListView) findViewById(R.id.pageList);
editTextB = (EditText) findViewById(R.id.searchB);
listView.setAdapter(new PagesAdapter(this));
listView.setOnItemClickListener((OnItemClickListener) this);
}
}
class SingleRow {
String pagedata;
SingleRow(String pagedata){
this.pagedata=pagedata;
}
}
class PagesAdapter extends BaseAdapter implements OnItemClickListener{
ArrayList<SingleRow> pagelist;
Context context;
PagesAdapter(Context c){
context=c;
pagelist = new ArrayList<SingleRow>();
Resources res = c.getResources();
String [] pagedatas = res.getStringArray(R.array.pages_data);
for (int i=0;i<463;i++){
pagelist.add(new SingleRow(pagedatas[i]));
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return pagelist.size();
}
@Override
public Object getItem(int i) {
// TODO Auto-generated method stub
return pagelist.get(i);
}
@Override
public long getItemId(int i) {
// TODO Auto-generated method stub
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewG) {
// TODO Auto-generated method stub
LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row=inflater.inflate(R.layout.single_row,viewG,false);
TextView pagetitle = (TextView) row.findViewById(R.id.textViewRow);
SingleRow temp=pagelist.get(i);
pagetitle.setText(temp.pagedata);
return row;
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int i, long arg3) {
// TODO Auto-generated method stub
}
}
Doceniam każdą udzieloną pomoc. Dziękuję Yhu!
EDYTOWANIE
Czy to zadziała?
if (index == 0) {
Intent i = new Intent(this, WebViewActivity.class);
i.putExtra("keyHTML", "file:///android_asset/page1.html");
startActivity(i);
} else if (index == 1) {
Intent i = new Intent(this, WebViewActivity.class);
i.putExtra("keyHTML", "file:///android_asset/page2.html");
startActivity(i);
przypisać kliknij do każdej pozycji? czy możesz rozwinąć? – Raghunandan
Tak, tak jak poprzednio użyłem simple_list_layout i nie mam parametrów getItem, getCount, więc było to całkiem proste, teraz w przypadku niestandardowego adaptera z tymi parametrami, jestem zdezorientowany, jaki krok do zrobienia. –
Napisz toast za pomocą metody onItemClick. Masz już przypisany moduł do nasłuchiwania kliknięć, ale nie widzisz połączenia zwrotnego. A także ponownie wykorzystaj swoje poglądy w metodzie getView. – Devrim