2015-08-03 1 views
0

В моем приложении Я получаю данные из синтаксического анализа, в котором некоторые строки содержат описание сотрудников, а некоторые нет. Я хочу, чтобы это произошло, если описание не доступно в Parse of One Items, то этот элемент списка нельзя нажать или выполнить функцию onItemClick.Как включить конкретный просмотр списка Элемент просмотра списка элементов

Или можно нажать только те, у кого есть Description, которые я получаю от Parse.

Я действительно понятия не имею, как достичь этого, эта вещь может быть возможной в Android.

Я выполнил всю другую работу, получая данные от разбора и показов в действии , но не имел идеи об этом. Любая помощь, пожалуйста,

мой весь код класса приведен ниже

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 

} 

}

+0

Эй Асадом Пожалуйста сообщение код для этого –

+0

@RajanBhavsar обновить для просмотра кода и для прослушивания кликов я понятия не имею, как это сделать –

+0

Вы должны установить тег как истинный с каждым элементом списка и если нет описания для этого элемента, тогда установите для него значение false, и при нажатии на него вы должны проверить тег для этого элемента, если он истинен затем запустите свой код еще не. –

ответ

1

Whay вы можете сделать в классе адаптера, чтобы переопределить ниже функции

@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; 
} 
+0

Можете ли вы объяснить, как я могу использовать его Я получаю данные от синтаксического анализа, который является описанием, но я не показываю его в списке, поэтому я не могу получить его позицию. , но если описание из parse равно null, тогда элемент списка не может быть нажат, чтобы увидеть описание , но если описание не равно null, тогда щелчок будет включен, чтобы пользователь мог нажать и посмотреть описание –

+0

@AsadMehmood В вашем классе адаптера "AgendaListAdapter" реализовать эту функцию и в этой функции, если конкретный objext равен null return false else return true –

+0

Спасибо. В общем, я получил вашу мысль. Проблема решена. Спасибо. Buddy @Moubeen Farooq Khan –