2012-12-09 18 views
9

因此,這是交易,我試圖尋找其他線程像這樣一個在這裏 https://stackoverflow.com/questions/12479909/how-to-make-list-header-and-footer-not-click-able 如何使listFooter不能點擊

但它不工作。我無法設法「點擊時不做任何事情」。

但問題不在於處理單擊列表時出現的問題,也就是列表提供的反饋就像點擊一樣(I.E亮起),我不希望出現這種情況。

我不明白爲什麼以下的部分不工作(IE仍然是可選擇/點擊)

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

任何人有任何想法,爲什麼我的頁腳是點擊/可選擇儘管我添加忒假statment該方法?

這裏是我的代碼

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; 
     } 
} 

這裏是我的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> 

回答

27

,而不是使用

addFooterView(v) 

使用

List.addFooterView(v, data, isSelectable); 

,並設置isselectable =假

List.addFooterView(v, null,false); 

所以你footerView不再選擇

+0

你是男人謝謝! =) – anders

+0

你很好;) –