Listview按键触发选择item改变文字

做的是智能TV,手机上触屏那套Listview的方式当然就有问题,第一个,首次进入Listview发现条目没有焦点。第二个,使用Listview发现onKeyDown(int keycode,KeyEvent event)不起作用。解决这两个问题,网上找到方法,第一个问题:        Instrumentation inst = new Instrumentation();
摘要由CSDN通过智能技术生成

做的是智能TV,手机上触屏那套Listview的方式当然就有问题,第一个,首次进入Listview发现条目没有焦点。第二个,使用Listview发现onKeyDown(int keycode,KeyEvent event)不起作用。解决这两个问题,网上找到方法,

第一个问题:



        Instrumentation inst = new Instrumentation();
        inst.setInTouchMode(false);//listView首次进入无焦点的解决办法。在listview生成前,加入这两句,但是我实验不起作用。后来还是用的这个:

    public void recoverFocus(){
        listview_ci_debug.requestFocus();
        listview_ci_debug.setSelection(0);       
    }

这个函数的用法对位置有特别要求,就是必须放在ui主activity中调用。放在子类中不起作用,很奇怪。


第二个问题:

public boolean dispatchKeyEvent(KeyEvent event) {
        // TODO Auto-generated method stub
        boolean bRet = true;
        currentIndex = getCurrentIndex();
        if(event.getAction()==KeyEvent.ACTION_DOWN && event.getAction() != KeyEvent.ACTION_UP){
        switch (event.getKeyCode()){
       //你的代码逻辑,比如
            case KeyEvent.KEYCODE_DPAD_RIGHT:

break;

   }
        return bRet;
    }

特别注意的是最后要return true;保证按键响应执行。


接下来就是直接贴代码了:

mainActivity.java

package mstar.tvsetting.factory.ui.advancedoption;

import mstar.factorymenu.ui.R;
import mstar.tvsetting.factory.desk.FactoryDeskImpl;
import mstar.tvsetting.factory.desk.IFactoryDesk;
import android.app.Activity;
import android.app.Instrumentation;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.LinearLayout;

public class AdvancedOptionActivity extends Activity {
    private static final String TAG = "AdvancedOptionActivity";

    private IFactoryDesk factoryDesk;

    private AdvancedOptionListViewHolder advancedOptionListViewHolder;

    private UpgradeExportViewHolder upgradeExportViewHolder;

    private EnergyAdjustViewHolder energyAdjustViewHolder;

    private SSCAdjustViewHolder sscAdjustViewHolder;

    private CISettingListViewHolder ciSettingListViewHolder;

    private VIFAdjustViewHolder vifAdjustViewHolder;

    private VDAdjustListViewHolder vdAdjustListViewHolder;

    private IPEnableMappingViewHolder ipMappingViewHolder;

    private FactoryScanningViewHolder facScanningViewHolder;

    private FactoryWritingViewHolder facWritingViewHolder;

    private final static int ADV_MAIN_PAGE = 0;

    private final static int EX_UP_ADJUST_PAGE = 1;

    private final static int ENERGY_ADJUST_PAGE = 2;

    private final static int SSC_ADJUST_PAGE = 3;

    private final static int CI_ADJUST_PAGE = 4;

    private final static int VIF_ADJUST_PAGE = 5;

    private final static int VD_ADJUST_PAGE = 6;

    private final static int IP_MAPPING_PAGE = 7;

    private final static int MAC_SCANNING_PAGE = 8;

    private final static int MAC_WRITING_PAGE = 9;

    private final static int WIFIMAC_SCANNING_PAGE = 10;

    private final static int WIFIMAC_WRITING_PAGE = 11;

    private final static int EX_UP_ADJUST_INX = 101;

    private final static int ENERGY_ADJUST_INX = 102;

    private final static int SSC_ADJUST_INX = 103;

    private final static int CI_ADJUST_INX = 104;

    private final static int VIF_ADJUST_INX = 105;

    private final static int VD_ADJUST_INX = 106;

    private final static int IP_MAPPING_INX = 107;

    private final static int MAC_SCANNING_INX = 108;

    private final static int MAC_WRITING_INX = 109;

    private final static int WIFIMAC_SCANNING_INX = 110;

    private final static int WIFIMAC_WRITING_INX = 111;

    private final static int SFU_AUTO_TEST_INX = 112;

    public int currentAdvPage = ADV_MAIN_PAGE;

    public boolean isSupportHDCP2 = false;

    public boolean isSupportCI_Plus = false;

    public static int startMacPage;

    private int currentIndex = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.advancedoptionviewflipper);
        factoryDesk = FactoryDeskImpl.getInstance(AdvancedOptionActivity.this);
        advancedOptionListViewHolder = new AdvancedOptionListViewHolder(
                AdvancedOptionActivity.this, factoryDesk);
        advancedOptionListViewHolder.findView();
        if (advancedOptionListViewHolder.getListView() != null) {
            advancedOptionListViewHolder.getListView().setOnItemClickListener(
                    new OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                            // TODO Auto-generated method stub
                            goToNewPage(arg2);
                        }

                    });
            advancedOptionListViewHolder.getListView().setOnItemSelectedListener(
                    new OnItemSelectedListener() {

                        @Override
                        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                                long arg3) {
                            // TODO Auto-generated method stub
                            // currentAdvPage = arg2+1;
                            currentIndex = arg2 + 101;

                        }

                        @Override
                        public void onNothingSelected(AdapterView<?> arg0) {
                            // TODO Auto-generated method stub

                        }

                    });
        }
        currentAdvPage = ADV_MAIN_PAGE;
        // advancedOptionViewHolder.advancedViewFlipper.setDisplayedChild(ADV_MAIN_PAGE);
        startMacPage = getIntent().getIntExtra("startMacPage", 0);

        if (!AdvancedOptionActivity.this.getResources().getString(R.string.designmenu_hdcp2)
                .equals("1")) {
            isSupportHDCP2 = false;
        } else {
            isSupportHDCP2 = true;
        }
        if (!AdvancedOptionActivity.this.getResources().getString(R.string.designmenu_ci)
                .equals("1")) {
            isSupportCI_Plus = false;
        } else {
            isSupportCI_Plus = true;
        }

    }

    @Override
    protected void onResume() {
        if (startMacPage > 0) {
            currentAdvPage = MAC_SCANNING_PAGE;

            advancedOptionListViewHolder.advancedViewFlipper.setDisplayedChild(MAC_SCANNING_PAGE);
            facScanningViewHolder = new FactoryScanningViewHolder(AdvancedOptionActivity.this,
                    factoryDesk);
            facScanningViewHolder.onCreate();
        }
        if (advancedOptionListViewHolder != null) {
            advancedOptionListViewHolder.setListViewData();
        }

        super.onResume();
    }

    private void goToNewPage(int Position) {
        currentIndex = Position + 101;
        switch (currentIndex) {
            case EX_UP_ADJUST_INX:
                currentAdvPage = EX_UP_ADJUST_PAGE;
                advancedOptionListViewHolder.advancedViewFlipper
                        .setDisplayedChild(EX_UP_ADJUST_PAGE);
                upgradeExportViewHolder = new UpgradeExportViewHolder(AdvancedOptionActivity.this,
                        factoryDesk);
                upgradeExportViewHolder.findView();
                upgradeExportViewHolder.onCreate();
                break;
            case ENERGY_ADJUST_INX:
                currentAdvPage = ENERGY_ADJUST_PAGE;
                advancedOptionListViewHolder.advancedViewFlipper
                        .setDisplayedChild(ENERGY_ADJUST_PAGE);
                energyAdjustViewHolder = new EnergyAdjustViewHolder(AdvancedOptionActivity.this,
                        factoryDesk);
                energyAdjustViewHolder.findView();
                energyAdjustViewHolder.onCreate();
                break;
            case SSC_ADJUST_INX:
                currentAdvPage = SSC_ADJUST_PAGE;
                advancedOptionListViewHolder.advancedViewFlipper.setDisplayedChild(SSC_ADJUST_PAGE);
                sscAdjustViewHolder = new SSCAdjustViewHolder(AdvancedOptionActivity.this,
                        factoryDesk);
                sscAdjustViewHolder.findView();
                sscAdjustViewHolder.onCreate();
                break;
            case CI_ADJUST_INX:
                currentAdvPage = CI_ADJUST_PAGE;
                advancedOptionListViewHolder.advancedViewFlipper.setDisplayedChild(CI_ADJUST_PAGE);
                ciSettingListViewHolder = new CISettingListViewHolder(AdvancedOptionActivity.this,
                        factoryDesk);
                ciSettingListViewHolder.findView();
                ciSettingListViewHold
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值