【发布时间】:2015-08-03 09:30:13
【问题描述】:
在我的应用程序中,我正在从解析中获取数据,其中一些行包含员工描述,而一些行不包含。
我想让这种情况发生,如果在 Parse of one Items 上没有描述,则无法单击该列表项或可以执行 onItemClick 功能。
或者只有那些有Description 的可以被点击,我从 Parse 得到。
我真的不知道如何实现这一点,这在 Android 中是否可以实现。
我已经完成了从解析中获取数据并在 Activity 中显示的所有其他工作 但对此一无所知。 请帮忙
下面是我的全班代码
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
}
}
【问题讨论】:
-
嘿阿萨德,请发布代码
-
@RajanBhavsar 刷新以查看代码,对于点击监听器,我不知道该怎么做
-
您必须将每个 Listview 项目的标签设置为 true,如果没有该项目的描述,则将该项目设置为 false,单击该项目时,您必须检查标签如果该项目为真,则运行您的代码,否则不运行。
标签: android list listview onitemclicklistener