So this is the deal, I have tried looking at other threads like this one here https://stackoverflow.com/questions/12479909/how-to-make-list-header-and-footer-not-click-able
But it doesn't work. I can't manage to "do nothing on click".
But the problem is not to handle what hapens when the list is clicked, that is that the list is giving feedback as if its been clicked (I.E lights up), and I don't want that.
I don't understand why the part below doesn't work (I.E it is still selectable/clickable)
ViewGroup footer = (ViewGroup)inflater.inflate(R.layout.listview_footer_row, null, false);//This is not working as it should
listView.addFooterView(footer);
Anyone have any idea why my footer is clickable/selectable despite i add te false statment to the method?
Here is my code
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;
}
}
And here is my listview_footer_row.xml file
<?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>
instead of using
addFooterView(v)
use
List.addFooterView(v, data, isSelectable);
and set isselectable = false
List.addFooterView(v, null,false);
so your footerView is no longer selectable
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With