2016-09-21 1 views
0

Я разрабатываю интерфейс, в котором у моего приложения есть 3 вкладки, и я создал его с помощью фрагментов, а третья вкладка - мне нужно отображать список с текстом и изображениями. Я могу отображать список, но когда я писал щелчок слушателя к каждому пункту приложения начинают врезаться и теперь у меня есть ошибка в не findViewById() function.I'll разделить свой код с этим .please ЛФВЭ меня Contact.javaне удается найти findViewById() в CustomListView с использованием фрагментов

import java.util.ArrayList; 
import java.util.List; 

import android.content.Intent; 
import android.content.res.TypedArray; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.ListFragment; 
import android.support.v7.app.AppCompatActivity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ListView; 
import com.tutorialsbuzz.slidetablistview.R; 

public class Contact extends ListFragment implements AdapterView.OnItemClickListener {   

String[] member_names; 
TypedArray profile_pics; 
String[] statues; 
String[] contactType; 
List<RowItem> rowItems; 
ListView mylistview; 

@Override 
public View onCreateView(LayoutInflater inflater, 
     @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.contact, container, false); 
    return v; 
} 

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    rowItems = new ArrayList<RowItem>(); 

    member_names = getResources().getStringArray(R.array.Member_names); 
    profile_pics = getResources().obtainTypedArray(R.array.profile_pics); 
    statues = getResources().getStringArray(R.array.statues); 
    contactType = getResources().getStringArray(R.array.contactType); 

    for (int i = 0; i < member_names.length; i++) { 
     RowItem item = new RowItem(member_names[i], 
       profile_pics.getResourceId(i, -1), statues[i], 
       contactType[i]); 
     rowItems.add(item); 
    } 
    mylistview= (ListView) findViewById(android.R.id.list); 
    CustomAdapter adapter = new CustomAdapter(getActivity(), rowItems); 
    setListAdapter(adapter); 
    profile_pics.recycle(); 
    mylistview.setOnItemClickListener(this); 

} 



@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    getActivity().getMenuInflater().inflate(R.menu.menu_main, menu); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
    setHasOptionsMenu(true); 

} 

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    if (position == 0) { 
     Intent myIntent = new Intent(view.getContext(), ummy.class); 
     startActivityForResult(myIntent, 0); 
    } 

    if (position == 1) { 
     Intent myIntent = new Intent(view.getContext(),ummy.class); 
     startActivityForResult(myIntent, 0); 
    } 



    if (position == 2) { 
     Intent myIntent = new Intent(view.getContext(), ummy.class); 
     startActivityForResult(myIntent, 0); 
    } 

    if (position == 3) { 
     Intent myIntent = new Intent(view.getContext(), ummy.class); 
     startActivityForResult(myIntent, 0); 
    } 

    if (position == 4) { 
     Intent myIntent = new Intent(view.getContext(), ummy.class); 
     startActivityForResult(myIntent, 0); 
    } 

} 
} 

CustomAdapter.java

import java.util.List; 
import com.tutorialsbuzz.slidetablistview.R; 
import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class CustomAdapter extends BaseAdapter { 

Context context; 
List<RowItem> rowItems; 

CustomAdapter(Context context, List<RowItem> rowItems) { 
    this.context = context; 
    this.rowItems = rowItems; 
} 

@Override 
public int getCount() { 
    return rowItems.size(); 
} 

@Override 
public Object getItem(int position) { 
    return rowItems.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return rowItems.indexOf(getItem(position)); 
} 

/* private view holder class */ 
private class ViewHolder { 
    ImageView profile_pic; 
    TextView member_name; 
    TextView status; 
    TextView contactType; 
} 

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

    ViewHolder holder = null; 

    LayoutInflater mInflater = (LayoutInflater) context 
      .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.list_item, null); 
     holder = new ViewHolder(); 

     holder.member_name = (TextView) convertView 
       .findViewById(R.id.member_name); 
     holder.profile_pic = (ImageView) convertView 
       .findViewById(R.id.profile_pic); 
     holder.status = (TextView) convertView.findViewById(R.id.status); 
     holder.contactType = (TextView) convertView 
       .findViewById(R.id.contact_type); 

     RowItem row_pos = rowItems.get(position); 

     holder.profile_pic.setImageResource(row_pos.getProfile_pic_id()); 
     holder.member_name.setText(row_pos.getMember_name()); 
     holder.status.setText(row_pos.getStatus()); 
     holder.contactType.setText(row_pos.getContactType()); 

     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    return convertView; 
} 
} 

Contact.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout  `xmlns:android="http://schemas.android.com/apk/res/android"` 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="#ffffff" > 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 
</ListView> 

<TextView 
    android:id="@android:id/empty" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 
</TextView> 

</LinearLayout> 

ответ

3

Используйте getView() принести свой вид. Этот метод возвращает корневой вид для фрагмента. С этим вы можете позвонить findViewById(). Или сделайте следующее

ListView mylistview; 

@Override 
public View onCreateView(LayoutInflater inflater, 
     ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.contact, container, false); 
    mylistview = (ListView) v.findViewById(android.R.id.list); 
    return v; 
} 

getView() method: - Получить представление корневой макет фрагмента (один возвращенное onCreateView (LayoutInflater, ViewGroup, Bundle)), если это предусмотрено.

Используйте getView() метод внутри onActivityCreated, чтобы найти свой вид следующий

myListVIew = (ListView) getView().findViewById(R.id.list); 
+0

Спасибо большой Пуджи за помощь мне .. –

0

изменения вы GetView mehtod адаптера, как это

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

    ViewHolder holder = null; 

    LayoutInflater mInflater = (LayoutInflater) context 
      .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.list_item, null); 
     holder = new ViewHolder(); 

     holder.member_name = (TextView) convertView 
       .findViewById(R.id.member_name); 
     holder.profile_pic = (ImageView) convertView 
       .findViewById(R.id.profile_pic); 
     holder.status = (TextView) convertView.findViewById(R.id.status); 
     holder.contactType = (TextView) convertView 
       .findViewById(R.id.contact_type); 


     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

     RowItem row_pos = rowItems.get(position); 

     holder.profile_pic.setImageResource(row_pos.getProfile_pic_id()); 
     holder.member_name.setText(row_pos.getMember_name()); 
     holder.status.setText(row_pos.getStatus()); 
     holder.contactType.setText(row_pos.getContactType()); 

    return convertView; 
} 
Смежные вопросы