9

所以这就是交易,我已经尝试在这里查看其他类似的线程 https://stackoverflow.com/questions/12479909/how-to-make-list-header-and-footer-not-click-able

但它不起作用。我无法“在点击时什么也不做”。

但问题不在于处理单击列表时发生的情况,即列表正在提供反馈,就好像它已被单击(IE 亮起),我不希望那样。

我不明白为什么下面的部分不起作用(即它仍然是可选择/可点击的)

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

任何人都知道为什么我的页脚是可点击/可选择的,尽管我在方法中添加了错误的声明?

这是我的代码

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>
4

1 回答 1

28

而不是使用

addFooterView(v) 

采用

List.addFooterView(v, data, isSelectable);

并设置 isselectable = false

List.addFooterView(v, null,false);

所以你的 footerView 不再可选择

于 2012-12-09T13:41:05.300 回答