2016-10-21 2 views
-4

мне нужно показать журнал вызовов в ListView на фрагментеКак показать журнал вызовов в ListView на фрагменте?

setListAdapter(new MyAdapter(this, android.R.layout.simple_list_item_1, 
      R.id.tvNameMain, conNames)); 
    return rootView; 

и всего кода

private ListView mListView; 

private ArrayList<String> conNames; 
private ArrayList<String> conNumbers; 
private ArrayList<String> conTime; 
private ArrayList<String> conDate; 
private ArrayList<String> conType; 

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.activity_recents, container, false); 
    mListView = (ListView)rootView.findViewById(R.id.list); 

    conNames = new ArrayList<String>(); 
    conNumbers = new ArrayList<String>(); 
    conTime = new ArrayList<String>(); 
    conDate = new ArrayList<String>(); 
    conType = new ArrayList<String>(); 

    Cursor curLog = getAllCallLogs(getActivity().getContentResolver()); 

    setCallLogs(curLog); 

    setListAdapter(new MyAdapter(this, android.R.layout.simple_list_item_1, 
      R.id.tvNameMain, conNames)); 
    return rootView; 
} 

MyAdapter Класс

private class MyAdapter extends ArrayAdapter<String> { 

    public MyAdapter(Context context, int resource, int textViewResourceId, 
        ArrayList<String> conNames) { 
     super(context, resource, textViewResourceId, conNames); 

    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View row = setList(position, parent); 
     return row; 
    } 

    private View setList(int position, ViewGroup parent) { 
     LayoutInflater inf = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View row = inf.inflate(R.layout.liststyle, parent, false); 

     TextView tvName = (TextView) row.findViewById(R.id.tvNameMain); 
     TextView tvNumber = (TextView) row.findViewById(R.id.tvNumberMain); 
     TextView tvTime = (TextView) row.findViewById(R.id.tvTime); 
     TextView tvDate = (TextView) row.findViewById(R.id.tvDate); 
     TextView tvType = (TextView) row.findViewById(R.id.tvType); 

     tvName.setText(conNames.get(position)); 
     tvNumber.setText(conNumbers.get(position)); 
     tvTime.setText("(" + conTime.get(position) + "sec)"); 
     tvDate.setText(conDate.get(position)); 
     tvType.setText("(" + conType.get(position) + ")"); 

     return row; 
    } 
} 

класса CallLog

private void setCallLogs(Cursor curLog) { 
    while (curLog.moveToNext()) { 
     String callNumber = curLog.getString(curLog 
       .getColumnIndex(android.provider.CallLog.Calls.NUMBER)); 
     conNumbers.add(callNumber); 

     String callName = curLog 
       .getString(curLog 
         .getColumnIndex(android.provider.CallLog.Calls.CACHED_NAME)); 
     if (callName == null) { 
      conNames.add("Unknown"); 
     } else 
      conNames.add(callName); 

     String callDate = curLog.getString(curLog 
       .getColumnIndex(android.provider.CallLog.Calls.DATE)); 
     SimpleDateFormat formatter = new SimpleDateFormat(
       "dd-MMM-yyyy HH:mm"); 
     String dateString = formatter.format(new Date(Long 
       .parseLong(callDate))); 
     conDate.add(dateString); 

     String callType = curLog.getString(curLog 
       .getColumnIndex(android.provider.CallLog.Calls.TYPE)); 
     if (callType.equals("1")) { 
      conType.add("Incoming"); 
     } else 
      conType.add("Outgoing"); 

     String duration = curLog.getString(curLog 
       .getColumnIndex(android.provider.CallLog.Calls.DURATION)); 
     conTime.add(duration); 

    } 
} 

Класс Курсор

public static Cursor getAllCallLogs(ContentResolver cr) { 
    // reading all data in descending order according to DATE 
    String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 
    Uri callUri = Uri.parse("content://call_log/calls"); 
    Cursor curCallLogs = cr.query(callUri, null, null, null, strOrder); 

    return curCallLogs; 
} 
+0

Пожалуйста, добавьте больше кода - 2 строки не достаточно для тех, кто, чтобы помочь вам. Опишите, что не так. –

ответ

0

Если вы хотите использовать setListAdapter ваш Fragment должен распространяться ListFragment. но в вашем случае изменения его mListView.setAdapter([...]) должны сделать трюк

Смените

setListAdapter(new MyAdapter(this, android.R.layout.simple_list_item_1, R.id.tvNameMain, conNames)); 

Для

mListView.setAdapter(new MyAdapter(this, android.R.layout.simple_list_item_1, R.id.tvNameMain, conNames)); 
+0

Это ... ArrayAdapter adapter = new MyAdapter (getActivity(). GetApplicationContext(), R.layout.liststyle, R.id.tvNameMain, conNames); mListView.setAdapter (адаптер); – Piyawat

+0

Я не понимаю, что не так – theBugger

+0

В моем случае я должен исправить это. it to mListView.setAdapter << it Ошибка – Piyawat

Смежные вопросы