Cómo hacer que listFooter no se puede hacer clic

Así que este es el trato, he tratado de mirar otros hilos como este aquí https://stackoverflow.com/questions/12479909/how-to-make-list-header-and-footer-not-click-able

Pero no funciona. No puedo lograr "no hacer nada al hacer clic".

Pero el problema no es manejar lo que sucede cuando se hace clic en la lista, es decir, que la lista está dando retroalimentación como si se haya pulsado (IE se enciende), y no quiero eso.

No entiendo por qué la parte de abajo no funciona (IE es todavía seleccionable / clicable)

ViewGroup footer = (ViewGroup)inflater.inflate(R.layout.listview_footer_row, null, false);//This is not working as it should listView.addFooterView(footer); 

Alguien tiene alguna idea de por qué mi pie de página es clicable / seleccionable a pesar de añadir i falsa declaración al método?

Aquí está mi código

 import java.util.ArrayList; import android.content.Intent; import android.annotation.SuppressLint; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ListView; public class PortfolioFragMent extends Fragment{ private ListView listView; private Button goButton; private String[] listheader = {"Idag","Senaste","Antal","Avkastning %","Avkastning","Tot Värde"}; private static ShareHoldingAdapter adapter; private int totalElemInlist = listheader.length; private int currentelemInList=0; private ArrayList<ShareHolding> allShareHoldings = new ArrayList<ShareHolding>(); private Button buyButton; @SuppressLint("NewApi") public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @SuppressLint({ "NewApi", "NewApi" }) @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ allShareHoldings = Portfolio.getPortfolio().getAllShareHoldings(); super.onCreate(savedInstanceState); View view = inflater.inflate(R.layout.portfolioframe, container, false); listView = (ListView)view.findViewById(R.id.listView1); String[] array = new String[] {"one", "two", "three"}; /**********************************/ adapter = new ShareHoldingAdapter(getActivity(), R.layout.listview_item_row, allShareHoldings); /***********************************/ ViewGroup header = (ViewGroup)inflater.inflate(R.layout.listview_header_row, null, false); ViewGroup footer = (ViewGroup)inflater.inflate(R.layout.listview_footer_row, null, false);//This is not working as it should listView.addHeaderView(header); listView.addFooterView(footer); goButton = (Button)view.findViewById(R.id.testButton); goButton.setText(listheader[currentelemInList]); listView.setAdapter(adapter); goButton.setOnClickListener(new OnClickListener() { public void onClick(View view) { String buttonPressed = (String) ((Button) view).getText(); currentelemInList++; if(currentelemInList>=totalElemInlist){ currentelemInList=0; } adapter.setButtonPressed(currentelemInList); goButton.setText(listheader[currentelemInList]); } }); listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) { /* * Have to catch Nullpointer exception here since I have two elements in list plus 1 header and 1 footer. * When I click the footer I sent the number 3 to my next intent (4-1). But I don't want the footer to fire on click at all */ if(position<Portfolio.getPortfolio().count()){//Just to check that I havn't clicked listFooter. System.out.println("Klicka i listan"); Intent intent = new Intent(getActivity().getApplicationContext(), DetailShareHoldingActivity.class); intent.putExtra("new_variable_name","value"); intent.putExtra("bookPositionInList",(position-1));//Just so that the top of the list is not clicked System.out.println(position); startActivity(intent); } } }); buyButton = (Button)view.findViewById(R.id.buyNewShares); buyButton.setOnClickListener(new OnClickListener() {public void onClick(View view) { buyShares(); }}); return view; } @SuppressLint({ "NewApi", "NewApi" }) private void buyShares(){ System.out.println("Köpt tryckt"); Intent intent = new Intent(getActivity().getApplicationContext(), BuyNewSharesActivity.class); startActivity(intent); } @SuppressLint({ "NewApi", "NewApi" }) public void onListItemClick(ListView l, View v, int position, long id) { System.out.println("Klicka i listan"); Intent intent = new Intent(getActivity().getApplicationContext(), DetailShareHoldingActivity.class); intent.putExtra("new_variable_name","value"); intent.putExtra("bookPositionInList",position); startActivity(intent); } public static ShareHoldingAdapter getPortfolioFragmentShareHoldingAdapter(){ return adapter; } } 

Y aquí está mi archivo listview_footer_row.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableLayout android:id="@+id/book_detailTable" android:layout_width="0dp" android:layout_height="match_parent" android:layout_gravity="top" android:layout_weight="1" android:paddingTop="0dip" > <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="top" android:paddingTop="0dip" > <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:gravity="left" android:text="Namn" android:textColor="#ababab" android:textSize="25dip" /> </TableRow> </TableLayout> </LinearLayout> 

One Solution collect form web for “Cómo hacer que listFooter no se puede hacer clic”

En lugar de usar

 addFooterView(v) 

utilizar

 List.addFooterView(v, data, isSelectable); 

Y set isselectable = false

 List.addFooterView(v, null,false); 

Por lo que su footerView ya no se puede seleccionar

  • Android 2.2: cómo hacer que una aplicación se ejecute automáticamente en el inicio y cómo hacer que una aplicación inicie otra aplicación
  • ¿Se programará un temporizador en Android para ejecutar cada segundo trabajo durante un salto segundo?
  • AVD no dejará de cerrar
  • Evite que el juego LibGDX se detenga completamente cuando se detiene
  • Diferencia de cifrado asimétrica - Android vs Java
  • Android requiere el nivel de cumplimiento del compilador 5.0 o 6.0. Se encontró '1.7' en su lugar. Utilice Herramientas de Android> Fijar propiedades del proyecto
  • HttpURLConnection leyó InputStream dos veces
  • Cómo crear una cuadrícula de 10x10 en Android?
  • Cómo convertir los registros de base de datos en archivo csv en android?
  • Cómo escribir en una hoja de Google desde la aplicación de Android mediante programación
  • AlarmManager: cómo programar una alarma diaria y hacer frente a cambios de tiempo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.