Создайте onclick для всего списка, а не для отдельных строк в android.

У меня динамический макет списка. Я создал 5 строк (жестко запрограммированных) для списка. Теперь по умолчанию Android генерирует clickevent для каждой строки. Но вместо этого я хочу настроить событие onClick для всего блока listview и отключить отдельные ответвления строк. Как мне это сделать? Я хочу использовать весь список списков и перенаправить пользователя на другой макет: layout2.XML.

Мой XML файл:

<!--?xml version="1.0" encoding="utf-8"?-->
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="fill_parent" android:paddingleft="5dp" android:paddingright="5dp" android:orientation="vertical">

 <textview android:id="@+id/stream_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margintop="3dp" android:fontfamily="sans-serif-light" android:text="@+id/stream_name" android:textsize="14sp">


 <imageview android:id="@+id/your_fit_image" android:layout_width="17sp" android:layout_height="17sp" android:layout_alignparentright="true" android:layout_aligntop="@+id/stream_name" android:layout_marginright="5dp" android:contentdescription="@string/desc" android:src="@drawable/smiley">

 </imageview></textview></relativelayout>

МОЙ JAVA файл:

package org.in.pappu;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class Details_Kollege extends Activity {

 static final String[] mystreams_list = new String[] { 
 "Electronics & Telecom",
 "Information Technology", 
 "Computer", 
 "Mechanical",
 "Instrumentation", };
 int[] fit_image = new int[] { R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher};

 public static void updateListViewHeight(ListView myListView) {
 ListAdapter myListAdapter = myListView.getAdapter();
 if (myListAdapter == null) { 
 return;
 }
 //get listview height
 int totalHeight = 0;
 int adapterCount = myListAdapter.getCount();
 for (int size = 0; size < adapterCount ; size++) {
 View listItem = myListAdapter.getView(size, null, myListView);
 listItem.measure(0, 0);
 totalHeight += listItem.getMeasuredHeight();
 }
 //Change Height of ListView 
 ViewGroup.LayoutParams params = myListView.getLayoutParams();
 params.height = totalHeight + (myListView.getDividerHeight() * (adapterCount - 1));
 myListView.setLayoutParams(params);
 }

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.details_kollege); 


 // Each row in the list stores country name, currency and flag
 List<hashmap<string,string>> aList = new ArrayList<hashmap<string,string>>(); 

 for(int i=0;i<5;i++){
 HashMap<string, string=""> hm = new HashMap<string,string>();
 hm.put("stream_name", mystreams_list[i]);
 hm.put("your_fit_image", Integer.toString(fit_image[i]) ); 
 aList.add(hm); 
 }

 // Keys used in Hashmap
 String[] from = { "stream_name", "your_fit_image"};

 // Ids of views in listview_layout
 int[] to = { R.id.stream_name,R.id.your_fit_image}; 

 // Instantiating an adapter to store each items
 // R.layout.listview_layout defines the layout of each item
 SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), aList, R.layout.streams_list, from, to);

 // Getting a reference to listview of main.xml layout file
 ListView listView = ( ListView ) findViewById(R.id.streams_listview);

 // Setting the adapter to the listView
 listView.setAdapter(adapter); 
 updateListViewHeight(listView);

 }


}
</string,string></string,></hashmap<string,string></hashmap<string,string>
2 ответа

Вы пробовали обернуть ListView с помощью RelativeLayout, а затем добавить android: onClick в RelativeLayout?


Пытаться:

listView.setOnItemClickListener(new OnItemClickListener() {
 @Override
 public void onItemClick(AdapterView<!--?--> parent, View view,
 int position, long id) {

 Intent i = new Intent(Details_Kollege.this,
 NextActivityName.class);
 startActivity(i);

 }});

licensed under cc by-sa 3.0 with attribution.