Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使ListView项目不可单击_Android_Listview - Fatal编程技术网

Android 使ListView项目不可单击

Android 使ListView项目不可单击,android,listview,Android,Listview,我需要用ListView重新创建一个选项菜单。我已经创建了两个布局,一个用于“章节标题”,另一个用于项目本身 标题: <TextView android:id="@+id/headerTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Title" android:textColor="@android:color/

我需要用ListView重新创建一个选项菜单。我已经创建了两个布局,一个用于“章节标题”,另一个用于项目本身

标题:

<TextView
    android:id="@+id/headerTitle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Title"
    android:textColor="@android:color/holo_green_light" />

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@android:color/holo_green_light" />

设置活动

<ListView
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:id="@+id/optionList" />
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.context = this;
    setContentView(R.layout.settings_layout);
    setupActionBar();
    this.optionsList = (ListView)findViewById(R.id.optionList);
    this.optionsList.setHeaderDividersEnabled(false);
    this.options = new ArrayList<>();
    this.options.add(new Option("Generali", "", OptionTypes.HEADER));
    this.options.add(new Option("Cartella download", parseDirectory(getSharedPreferences(MainActivity.SHARED_PREFS_NAME, MODE_PRIVATE)
            .getString("DOWNLOADDIR",
            Environment.getExternalStorageDirectory()
                    + "/ItaSAMobileSubs")), OptionTypes.NORMAL));
    this.optionsList.getChildAt(0).setOnClickListener(null);
    OptionMenuAdapter optionMenuAdapter = new OptionMenuAdapter(this, this.options);
    this.optionsList.setAdapter(optionMenuAdapter);
    this.optionsList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch (position){
                case 0:

                    Toast.makeText(getApplicationContext(), "Titolo", Toast.LENGTH_LONG).show();
                    break;
                case 1:
                    mDirectoryTextView = (TextView)view.findViewById(R.id.optionDescription);
                    Intent directoryIntent = new Intent(context, DirectoryChooserActivity.class);
                    directoryIntent.putExtra(DirectoryChooserActivity.EXTRA_NEW_DIR_NAME,
                            "ItaSAMobileSubs");
                    startActivityForResult(directoryIntent, REQUEST_DIRECTORY);
                    break;
            }
        }
    });
    /*mDirectoryTextView = (TextView) findViewById(R.id.settingDescr);
    mDirectoryTextView.setText(parseDirectory(getSharedPreferences(MainActivity.SHARED_PREFS_NAME, MODE_PRIVATE).getString("DOWNLOADDIR",
            Environment.getExternalStorageDirectory()
                    + "/ItaSAMobileSubs")));
    Button directoryButton = (Button) findViewById(R.id.buttonDirectory);
    directoryButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


        }
    });*/
}

private void setupActionBar() {

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setBackgroundDrawable(
            getResources().getDrawable(R.drawable.banner));
    getActionBar().setDisplayShowTitleEnabled(false);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_DIRECTORY) {
        Log.i("Prova", String.format("Return from DirChooser with result %d",
                resultCode));

        if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) {
            mDirectoryTextView
                    .setText(parseDirectory(data
                            .getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR)));
            SharedPreferences.Editor editor = getSharedPreferences(MainActivity.SHARED_PREFS_NAME, MODE_PRIVATE).edit();
            editor.putBoolean("CHANGED", true);
            editor.putString("DOWNLOADDIR", data.getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR));
            editor.commit();
            Log.i("Cambiata", "" + getSharedPreferences(MainActivity.SHARED_PREFS_NAME, MODE_PRIVATE).getBoolean("CHANGED", false));
            Log.i("Directory", getSharedPreferences(MainActivity.SHARED_PREFS_NAME, MODE_PRIVATE).getString("DOWNLOADDIR", "-"));
        }
    }
}

private String parseDirectory(String path) {
    try {
        return path.replace(Environment.getExternalStorageDirectory().getCanonicalPath(), "");
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

我需要设置只有标题不会有OnClickListener

活动

<ListView
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:id="@+id/optionList" />
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.context = this;
    setContentView(R.layout.settings_layout);
    setupActionBar();
    this.optionsList = (ListView)findViewById(R.id.optionList);
    this.optionsList.setHeaderDividersEnabled(false);
    this.options = new ArrayList<>();
    this.options.add(new Option("Generali", "", OptionTypes.HEADER));
    this.options.add(new Option("Cartella download", parseDirectory(getSharedPreferences(MainActivity.SHARED_PREFS_NAME, MODE_PRIVATE)
            .getString("DOWNLOADDIR",
            Environment.getExternalStorageDirectory()
                    + "/ItaSAMobileSubs")), OptionTypes.NORMAL));
    this.optionsList.getChildAt(0).setOnClickListener(null);
    OptionMenuAdapter optionMenuAdapter = new OptionMenuAdapter(this, this.options);
    this.optionsList.setAdapter(optionMenuAdapter);
    this.optionsList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch (position){
                case 0:

                    Toast.makeText(getApplicationContext(), "Titolo", Toast.LENGTH_LONG).show();
                    break;
                case 1:
                    mDirectoryTextView = (TextView)view.findViewById(R.id.optionDescription);
                    Intent directoryIntent = new Intent(context, DirectoryChooserActivity.class);
                    directoryIntent.putExtra(DirectoryChooserActivity.EXTRA_NEW_DIR_NAME,
                            "ItaSAMobileSubs");
                    startActivityForResult(directoryIntent, REQUEST_DIRECTORY);
                    break;
            }
        }
    });
    /*mDirectoryTextView = (TextView) findViewById(R.id.settingDescr);
    mDirectoryTextView.setText(parseDirectory(getSharedPreferences(MainActivity.SHARED_PREFS_NAME, MODE_PRIVATE).getString("DOWNLOADDIR",
            Environment.getExternalStorageDirectory()
                    + "/ItaSAMobileSubs")));
    Button directoryButton = (Button) findViewById(R.id.buttonDirectory);
    directoryButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


        }
    });*/
}

private void setupActionBar() {

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setBackgroundDrawable(
            getResources().getDrawable(R.drawable.banner));
    getActionBar().setDisplayShowTitleEnabled(false);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_DIRECTORY) {
        Log.i("Prova", String.format("Return from DirChooser with result %d",
                resultCode));

        if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) {
            mDirectoryTextView
                    .setText(parseDirectory(data
                            .getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR)));
            SharedPreferences.Editor editor = getSharedPreferences(MainActivity.SHARED_PREFS_NAME, MODE_PRIVATE).edit();
            editor.putBoolean("CHANGED", true);
            editor.putString("DOWNLOADDIR", data.getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR));
            editor.commit();
            Log.i("Cambiata", "" + getSharedPreferences(MainActivity.SHARED_PREFS_NAME, MODE_PRIVATE).getBoolean("CHANGED", false));
            Log.i("Directory", getSharedPreferences(MainActivity.SHARED_PREFS_NAME, MODE_PRIVATE).getString("DOWNLOADDIR", "-"));
        }
    }
}

private String parseDirectory(String path) {
    try {
        return path.replace(Environment.getExternalStorageDirectory().getCanonicalPath(), "");
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.context=this;
setContentView(R.layout.settings\u布局);
setupActionBar();
this.optionsList=(ListView)findViewById(R.id.optionList);
this.optionsList.setHeaderDivisEnabled(false);
this.options=new ArrayList();
this.options.add(新选项(“Generali”、“OptionTypes.HEADER”);
添加(新选项(“Cartella下载”),解析目录(GetSharedReferences(MainActivity.SHARED\u PREFS\u NAME,MODE\u PRIVATE)
.getString(“下载目录”,
Environment.getExternalStorageDirectory()
+“/ItaSAMobileSubs”)、OptionTypes.NORMAL”);
this.optionsList.getChildAt(0).setOnClickListener(null);
OptionMenuAdapter OptionMenuAdapter=新的OptionMenuAdapter(this,this.options);
this.optionList.setAdapter(optionMenuAdapter);
this.optionList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
开关(位置){
案例0:
Toast.makeText(getApplicationContext(),“Titolo”,Toast.LENGTH_LONG.show();
打破
案例1:
mDirectoryTextView=(TextView)view.findViewById(R.id.optionDescription);
Intent directoryIntent=新的Intent(上下文,DirectoryChooserActivity.class);
directoryIntent.putExtra(directoryChooseActivity.EXTRA\u NEW\u DIR\u NAME,
“ItaSAMobileSubs”);
startActivityForResult(目录意图、请求目录);
打破
}
}
});
/*mDirectoryTextView=(TextView)findViewById(R.id.settingDescr);
mDirectoryTextView.setText(parseDirectory(getSharedReferences(MainActivity.SHARED\u PREFS\u NAME,MODE\u PRIVATE).getString(“DOWNLOADDIR”,
Environment.getExternalStorageDirectory()
+“/ItaSAMobileSubs”);
按钮目录Button=(按钮)findViewById(R.id.buttonDirectory);
directoryButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
}
});*/
}
私有void setupActionBar(){
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setBackgroundDrawable(
getResources().getDrawable(R.drawable.banner));
getActionBar().setDisplayShowTitleEnabled(false);
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==REQUEST\u目录){
Log.i(“Prova”,String.format”(“从目录选择器返回,结果为%d”),
结果代码);
if(resultCode==directorycooseractivity.RESULT\u CODE\u DIR\u SELECTED){
mDirectoryTextView
.setText(解析目录(数据
.getStringExtra(directoryChooseActivity.RESULT\u SELECTED\u DIR));
SharedReferences.Editor编辑器=GetSharedReferences(MainActivity.SHARED_PREFS_名称,模式_PRIVATE).edit();
编辑器。putBoolean(“更改”,true);
editor.putString(“DOWNLOADDIR”,data.getStringExtra(directoryChooseActivity.RESULT\u SELECTED\u DIR));
commit();
Log.i(“Cambiata”,“getSharedReferences”(MainActivity.SHARED\u PREFS\u NAME,MODE\u PRIVATE).getBoolean(“CHANGED”,false));
Log.i(“目录”,getSharedReferences(MainActivity.SHARED\u PREFS\u NAME,MODE\u PRIVATE).getString(“DOWNLOADDIR”,“-”);
}
}
}
私有字符串解析目录(字符串路径){
试一试{
返回路径.replace(Environment.getExternalStorageDirectory().getCanonicalPath(),“”);
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}

如何操作?

在第二个布局(在
getView()
方法中)上设置
OnClickListener
,并从
列表视图中删除
OnItemClickListener
,为将来的用户覆盖适配器的方法解决了问题

@Override
public boolean isEnabled(int position) {

    if(position == 0){
       return false; // disable click on first item
    }

    return true;
}

在标题中添加安卓:focusableInTouchMode=“false”
android:focusableInTouchMode=“false”
layout@Rami尝试过,但不起作用…在适配器中重写
isEnabled()
方法,如果位置==0,则返回false:是的,这是一种很好的方法。在此方法中,在给定位置获取对象并检查它是标题还是内容,然后返回false或true。@Rami现在它可以工作了,谢谢你,伙计!;)