Android 使ListView项目不可单击
我需要用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/
<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现在它可以工作了,谢谢你,伙计!;)