如何启用特定列表视图项目点击监听器
How to Enable Specific List View Item's click listener
在我的应用程序中,我正在从解析中获取数据,其中一些行包含员工描述,一些行不包含。
我想让它发生,如果描述在一个项目的解析中不可用,那么该列表项目就不能被点击或者可以执行 onItemClick
功能。
或者只有那些可以点击的那些有 Description
我从 Parse 得到的。
我真的不知道如何实现这个,这个东西在 Android 中是否可行。
我已经完成了所有其他工作,从解析中获取数据并在 Activity 中显示
但对此一无所知。
请帮忙
我的整个Class代码如下
public class FragmentActivity_DayFirst extends Fragment implements
OnItemClickListener {
Bitmap bmp;
ListView listview;
List<ParseObject> ob;
ProgressDialog mProgressDialog;
ArrayAdapter<String> adapter;
AgendaListAdapter adapter2;
Fragment fr;
FragmentManager fm;
FragmentTransaction fragmentTransaction;
private List<GetSet> agendaList = new ArrayList<GetSet>();
List<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_fragment__dayfirst,
container, false);
new RemoteDataTask().execute();
return view;
}
// RemoteDataTask AsyncTask
private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Create a progressdialog
mProgressDialog = new ProgressDialog(getActivity());
// Set progressdialog title
mProgressDialog.setTitle("Loading Details of 1st Day");
// Set progressdialog message
mProgressDialog
.setMessage("Wait.. It May Take a while depending on your Bandwidth");
mProgressDialog.setIndeterminate(false);
// Show progressdialog
mProgressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
"Agendas");
query.whereEqualTo("day", "August 7th, 2015");
query.orderByAscending("createdAt");
try {
ob = query.find();
if (ob != null) {
for (ParseObject agendas : ob) {
// ParseFile image = (ParseFile)
// complain.get("imageURL");
GetSet agendaGetSet = new GetSet();
agendaGetSet.setStartTime((String) agendas
.get("startTime"));
Log.v("post", (String) agendas.get("startTime"));
agendaGetSet
.setEndTime((String) agendas.get("endTime"));
Log.v("category", (String) agendas.get("endTime"));
agendaGetSet.setEventTitle((String) agendas
.get("description"));
Log.v("post", (String) agendas.get("description"));
agendaList.add(agendaGetSet);
}
} else {
Log.v("post", "No Results");
}
} catch (ParseException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
Log.v("post", "After query post");
listview = (ListView) getView().findViewById(R.id.firstlistview);
// Pass the results into ListViewAdapter.java
adapter2 = new AgendaListAdapter(getActivity(), agendaList);
// Binds the Adapter to the ListView
listview.setAdapter(adapter2);
// Close the progressdialog
mProgressDialog.dismiss();
// Item Click Listener for the listview
OnItemClickListener itemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View container,
int position, long id) {
// Getting the Container Layout of the ListView
LinearLayout linearLayoutParent = (LinearLayout) container;
// Getting the inner Linear Layout
LinearLayout linearLayoutChild = (LinearLayout) linearLayoutParent
.getChildAt(0);
// Getting the inner Linear Layout
RelativeLayout relativeLayoutChild = (RelativeLayout) linearLayoutParent
.getChildAt(1);
// Getting the Country TextView
TextView tv_title = (TextView) relativeLayoutChild
.getChildAt(0);
TextView startTime = (TextView) linearLayoutChild
.getChildAt(0);
TextView endTime = (TextView) linearLayoutChild
.getChildAt(1);
String mTitle = tv_title.getText().toString();
String mstartTime = startTime.getText().toString();
String mendTime = endTime.getText().toString();
Intent intent = new Intent(getActivity(), EventDetail.class);
intent.putExtra("title", mTitle);
intent.putExtra("starttime", mstartTime);
intent.putExtra("endtime", mendTime);
startActivity(intent);
Toast.makeText(getActivity(),
mTitle + " " + mstartTime + " " + mendTime,
Toast.LENGTH_SHORT).show();
}
};
listview.setOnItemClickListener(itemClickListener);
}
}
public void onStart() {
super.onStart();
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
}
}
您可以在适配器中做的事情 class 是覆盖以下功能
@Override
public boolean isEnabled(int position) {
// here you can implement logic and can return true and false
// if you will return true then row will be clickable
// if you return false the row will be not clickable
return true;
}
在我的应用程序中,我正在从解析中获取数据,其中一些行包含员工描述,一些行不包含。
我想让它发生,如果描述在一个项目的解析中不可用,那么该列表项目就不能被点击或者可以执行 onItemClick
功能。
或者只有那些可以点击的那些有 Description
我从 Parse 得到的。
我真的不知道如何实现这个,这个东西在 Android 中是否可行。
我已经完成了所有其他工作,从解析中获取数据并在 Activity 中显示 但对此一无所知。 请帮忙
我的整个Class代码如下
public class FragmentActivity_DayFirst extends Fragment implements
OnItemClickListener {
Bitmap bmp;
ListView listview;
List<ParseObject> ob;
ProgressDialog mProgressDialog;
ArrayAdapter<String> adapter;
AgendaListAdapter adapter2;
Fragment fr;
FragmentManager fm;
FragmentTransaction fragmentTransaction;
private List<GetSet> agendaList = new ArrayList<GetSet>();
List<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_fragment__dayfirst,
container, false);
new RemoteDataTask().execute();
return view;
}
// RemoteDataTask AsyncTask
private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Create a progressdialog
mProgressDialog = new ProgressDialog(getActivity());
// Set progressdialog title
mProgressDialog.setTitle("Loading Details of 1st Day");
// Set progressdialog message
mProgressDialog
.setMessage("Wait.. It May Take a while depending on your Bandwidth");
mProgressDialog.setIndeterminate(false);
// Show progressdialog
mProgressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
"Agendas");
query.whereEqualTo("day", "August 7th, 2015");
query.orderByAscending("createdAt");
try {
ob = query.find();
if (ob != null) {
for (ParseObject agendas : ob) {
// ParseFile image = (ParseFile)
// complain.get("imageURL");
GetSet agendaGetSet = new GetSet();
agendaGetSet.setStartTime((String) agendas
.get("startTime"));
Log.v("post", (String) agendas.get("startTime"));
agendaGetSet
.setEndTime((String) agendas.get("endTime"));
Log.v("category", (String) agendas.get("endTime"));
agendaGetSet.setEventTitle((String) agendas
.get("description"));
Log.v("post", (String) agendas.get("description"));
agendaList.add(agendaGetSet);
}
} else {
Log.v("post", "No Results");
}
} catch (ParseException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
Log.v("post", "After query post");
listview = (ListView) getView().findViewById(R.id.firstlistview);
// Pass the results into ListViewAdapter.java
adapter2 = new AgendaListAdapter(getActivity(), agendaList);
// Binds the Adapter to the ListView
listview.setAdapter(adapter2);
// Close the progressdialog
mProgressDialog.dismiss();
// Item Click Listener for the listview
OnItemClickListener itemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View container,
int position, long id) {
// Getting the Container Layout of the ListView
LinearLayout linearLayoutParent = (LinearLayout) container;
// Getting the inner Linear Layout
LinearLayout linearLayoutChild = (LinearLayout) linearLayoutParent
.getChildAt(0);
// Getting the inner Linear Layout
RelativeLayout relativeLayoutChild = (RelativeLayout) linearLayoutParent
.getChildAt(1);
// Getting the Country TextView
TextView tv_title = (TextView) relativeLayoutChild
.getChildAt(0);
TextView startTime = (TextView) linearLayoutChild
.getChildAt(0);
TextView endTime = (TextView) linearLayoutChild
.getChildAt(1);
String mTitle = tv_title.getText().toString();
String mstartTime = startTime.getText().toString();
String mendTime = endTime.getText().toString();
Intent intent = new Intent(getActivity(), EventDetail.class);
intent.putExtra("title", mTitle);
intent.putExtra("starttime", mstartTime);
intent.putExtra("endtime", mendTime);
startActivity(intent);
Toast.makeText(getActivity(),
mTitle + " " + mstartTime + " " + mendTime,
Toast.LENGTH_SHORT).show();
}
};
listview.setOnItemClickListener(itemClickListener);
}
}
public void onStart() {
super.onStart();
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
}
}
您可以在适配器中做的事情 class 是覆盖以下功能
@Override
public boolean isEnabled(int position) {
// here you can implement logic and can return true and false
// if you will return true then row will be clickable
// if you return false the row will be not clickable
return true;
}