如何启用特定列表视图项目点击监听器

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;
}