0

Я сам изучаю Android. У меня есть знания по использованию listView с использованием Arrayadapter. Теперь я собираюсь узнать Фрагменты.Можно ли использовать ArrayAdapter и ListView для создания фрагментов?

Возможно ли создание фрагментов с использованием ArrayAdapter и listView? Здесь первым фрагментом в списке должно быть имя человека, на которое нажимается фрагмент справа с подробными контактными данными этого человека. При нажатии на этот подробный контактный адрес открывается приложение электронной почты для отправки электронной почты этому контакту.

У меня есть этот вопрос, потому что, когда я пытался добавить ListView на XML для фрагмента он показывает ошибки, что говорит недопустимые атрибуты используются активности контакта (это деятельность для размещения фрагментов)

public class ContactActivity extends Activity { 
    ListView listView; 
    //TextView textView; 
    ArrayAdapter<Contact> cAdapter; 
    private Contact[] myContact = { 
      new Contact("Rabin", "Awal", "+405-315-2027", "[email protected]"), 
      new Contact("David", "Gilmour", "+455-315-2827", "[email protected]"), 
      new Contact("James", "Hetfield", "+455-315-0026", "[email protected]"), 
      new Contact("Kirk", "Hammet", "+445-315-2227", "[email protected]"), 
      new Contact("Tom", "Morello", "+415-315-2497", "[email protected]"), 
      new Contact("Ron", "Thal", "+405-315-2007", "[email protected]") 

    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_contact); 
     //listView = (ListView) findViewById(R.id.contact_list_fragment_container); 
     //textView = (TextView) findViewById(R.id.contact_frag_list) 
     cAdapter = new ArrayAdapter<>(getApplicationContext(), R.layout.contact_list, myContact); 
     listView.setAdapter(cAdapter); 



    } 

Pure Java Class XML

public class Contact { 

    private String fname, lname, phone, email; 

    public Contact(String fname, String lname, String phone, String email){ 
     this.fname = fname; 
     this.lname = lname; 
     this.email = email; 
     this.phone = phone; 
    } 

    public String getFname() { 
     return fname; 
    } 

    public String getLname() { 
     return lname; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public String getPhone() { 
     return phone; 
    } 

    public void setFname(String fname) { 
     this.fname = fname; 
    } 

    public void setLname(String lname) { 
     this.lname = lname; 
    } 

    public void setPhone(String phone) { 
     this.phone = phone; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    @Override 
    public String toString() { 
     return super.toString(); 
    } 
} 

активности контакта в

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_contact" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="edu.uco.rawal.p5rabina.ContactActivity"> 

    <FrameLayout 
     android:id="@+id/contact_list_fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
    <FrameLayout 
     android:id="@+id/contact_detail_fragment_container" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" /> 



</RelativeLayout> 
+0

В идеале вы хотели бы пойти с пользовательской точки зрения для этого. – lawonga

+0

@ lawonga не могли бы вы немного его разработать. Я понятия не имею о пользовательском представлении. – robinleathal

+0

Если вы начинаете сначала, прочитайте это https://developer.android.com/guide/practices/tablets-and-handsets.html – uguboz

ответ

0

Да, в этом случае есть ListFragment, который можно использовать. Вот как сделать

public class ContactListFragment extends ListFragment { 

    ArrayAdapter<Contact> cAdapter; 
    //ArrayAdapter<String> cAdapter; 


    interface ContactListListener{ 
     void itemClicked(long id); 
    } 
    //add listener to fragment 
    private ContactListListener listener; 

    public ContactListFragment() { 
     // Required empty public constructor 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

    cAdapter = new ArrayAdapter<>(inflater.getContext(), simple_list_item_1, myContact); 
..... 
setListAdapter(cAdapter); 
     cAdapter.notifyDataSetChanged(); 

     return super.onCreateView(inflater, container, savedInstanceState); 
    } 

} 

их в деятельности, мы должны реализовать его

public class ContactActivity extends Activity implements ContactListFragment.ContactListListener{ 

    @Override 
    public void itemClicked(long id){ 
     //method also defined in the listener 

     View fragmentContainer = findViewById(R.id.fragment_detail_container); 
    //here instanciate the fragment and commit 


    } 

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