2

これが活動です

private View footer;
private Button btnmore;

linear = (LinearLayout) findViewById(R.id.layout_content);
    linear.setVisibility(View.VISIBLE);

    LayoutInflater liInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    linear.addView(liInflater.inflate(R.layout.main_particularcategoryallnewslist, null));
linear.addView(liInflater.inflate(R.layout.main_particularcategoryallnewslistfv, null));
    footer = (View)getLayoutInflater().inflate(R.layout.main_particularcategoryallnewslistfv, null);
btnmore = (Button)findViewById(R.id.btn_more); 

ListView lv = (ListView) findViewById(android.R.id.list);
SimpleAdapter adapter = new SimpleAdapter(this, fillMaps,
            R.layout.main_particularcategoryallnewslist, from, to);
    lv.addFooterView(footer); <-- how to set footer being clickable?
    lv.setAdapter(adapter);

フッターにはボタンがありますが、リスナーを設定しても応答しません。フッターはクリックできるようにする必要があり、ボタンをクリックできるのはボタンだけです。

lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            Intent intent = new Intent(Main_ParticularCategoryAllNews.this,
                    Main_ParticularNewsDetail.class);
            bundle = new Bundle();
            bundle.putInt("newsid", newsid[arg2]);
            intent.putExtras(bundle);
            startActivity(intent);
        }
    });

    btnmore.setOnClickListener(new OnClickListener() {
        public void onClick(View arg0) {
            if (isOnline() == true) {
                linear2.setVisibility(View.VISIBLE);
                AlphaAnimation alpha = new AlphaAnimation(0.5F, 0.5F);
                alpha.setDuration(15);
                alpha.setFillAfter(true);
                linear.startAnimation(alpha);
                btnrefresh.setVisibility(View.INVISIBLE);
                webservice.UpdateMoreCatNews(catnewsid);
                int secondsDelayed = 3;
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        startActivity(new Intent(Main_ParticularCategoryAllNews.this,
                                Main_AllLatestNews.class));
                        finish();
                    }
                }, secondsDelayed * 1000);
            } else {
                toast = Toast
                        .makeText(
                                Main_ParticularCategoryAllNews.this,
                                "Your device is not connect to internet, fail to update news!",
                                Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER_VERTICAL
                        | Gravity.CENTER_HORIZONTAL, 0, 0);
                toast.show();
            }
        }
    });

フッターがクリックされたときにリスナーを設定する方法は?

4

4 に答える 4

9

リストビューとボタンはフォーカスをめぐって争っており、リストビューが勝っています。

フッターに以下を設定します。false選択できないことをフッターに伝えます。

 mylistView.addFooterView(footerView, null, **false**);

または、OnClickListenerFireDevil がここで提案するように を使用できます。

于 2013-02-26T14:09:31.887 に答える
2

以下のヒントを使用することをお勧めします。

  1. ルートレイアウトとして相対レイアウトを作成します
  2. その上にフッター レイアウトと ListView を配置します
  3. この属性を ListView に追加します。

    android:layout_above="@id/your_footer_layout_id"
    

詳細については、このリンクを参照してください。onClick次の方法で、ビューがクリックされていることを確認できます。

@Override
public void onClick(View v) {

    switch(v.getId()){

    case R.id.my_footer: 
        Toast.makeText(getContext(), "footer clicked",Toast.LENGTH_LONG).show();
        break;

    case R.id.my_header: 
        Toast.makeText(getContext(), "header clicked", Toast.LENGTH_LONG).show();
        break;
    }
}
于 2012-05-07T06:44:23.193 に答える
1

フッター ビューのルートを の<merge />代わりに使用するように変更しますLinearLayoutViewa内の aの親は、ListViewタイプでなければなりませんAbsListView。次に、コードで、フッターViewを次のように膨張させます。

liInflater.inflate(R.layout.main_particularcategoryallnewslistfv, lv, false);

編集

その<merge />部分は不要かもしれません。最初にインフレ方法を上記に変更してみてください。

于 2012-05-07T05:45:37.590 に答える