У меня проблемы с программированием Listview во фрагменте - PullRequest
0 голосов
/ 27 июня 2018
package com.example.mirae01.bmsmessenger;


import java.util.ArrayList;

public class MenuSelectActivity extends AppCompatActivity {

    private static int PAGE_NUMBER = 3;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu_select);

        TestPagerAdapter mTestPagerAdapter = new TestPagerAdapter(getSupportFragmentManager());
        ViewPager mViewPager = (ViewPager) findViewById(R.id.viewpager);
        mViewPager.setAdapter(mTestPagerAdapter);

        TabLayout mTab = (TabLayout)findViewById(R.id.tabs);
        mTab.setupWithViewPager(mViewPager);

    }



    public class TestPagerAdapter extends FragmentPagerAdapter {

        public TestPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            switch (position){
                case 0:
                    return PageOneFragment.newInstance();
                case 1:
                    return PageTwoFragment.newInstance();
                case 2:
                    return PageThreeFragment.newInstance();
                default:
                    return null;
            }
        }


        @Override
        public int getCount() {
            return PAGE_NUMBER;
        }

        @Nullable
        @Override
        public CharSequence getPageTitle(int position) {
            switch(position) {
                case 0:
                    return "친구 목록";
                case 1:
                    return "대화방 목록";
                case 2:
                    return "대화방 추가";
                default:
                    return null;
            }
        }
    }
}


<?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="wrap_content"
    android:orientation="vertical">

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
       />
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_below="@id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

Приведенный выше код работает как мой файл MainActivity.java и файл XML.

package com.example.mirae01.bmsmessenger;





import java.util.ArrayList;


public class PageOneFragment extends Fragment {

    ListView myList;

    String friendName ="James", friendSentence = "Good day.";


    Fadapter myApt;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {


        View rootView = inflater.inflate(R.layout.fragment_page_one, container, false);
       myApt = new Fadapter(getActivity().getApplicationContext());
       myList = (ListView)rootView.findViewById(R.id.listviewFriend);

        myApt.addArray(friendName, friendSentence);


        return rootView;

    }

    public static PageOneFragment newInstance(){            //탭 기능구현 관련 클래스

        Bundle args = new Bundle();

        PageOneFragment fragment = new PageOneFragment();
        fragment.setArguments(args);
        return fragment;
    }



}

это файл FirstFragment.java.

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

   <!-- <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="친구 정보"
        android:textSize="15dp"
        android:layout_gravity="left"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        />-->

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

</LinearLayout>
this above is Firstfragment.xml file.

package com.example.mirae01.bmsmessenger;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.view.LayoutInflater;
import android.widget.TextView;

import java.util.ArrayList;

public class Fadapter extends BaseAdapter {


    class MyItem{                                           //변수의 묶음방식 생성
        String friendName, friendSentence;
        //Bitmap btmFriendImg;                                                                  //이미지 구현은 나중에 하자

    }

    private ArrayList<MyItem> arrItem = new ArrayList<>();
    Context context;

    public Fadapter(Context c) {
        context = c;
    }

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

    @Override
    public Object getItem(int i) {
        return arrItem.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View convertView, ViewGroup parent) {
        context = parent.getContext();

        if(convertView == null){
            LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.friendview,parent, false);
        }


        ImageView friendImg = (ImageView)convertView.findViewById(R.id.friendImg);        // 화면에 표시될 View(Layout이 inflate된)으로부터 위젯에 대한 참조 획득
        TextView txFriendName = (TextView)convertView.findViewById(R.id.txFriendName);
        TextView txFriendSentence = (TextView)convertView.findViewById(R.id.txfriendSentence);

        MyItem item = arrItem.get(i);       //arrItem에서 i번째 값들을 받아서 MyItem 방식의 item에 저장.

        friendImg.setImageResource(R.drawable.ic_launcher_foreground);                                     //나중에 이미지를 서버에서 받는 법을 배워서 수정하자!!
        txFriendName.setText(item.friendName);
        txFriendSentence.setText(item.friendSentence);

        return convertView;
    }

    public void addArray(String AddfriendName, String AddfriendSentence){     //예시로 만든, 에 값을 넣어주는 클래스
            MyItem tmpItem = new MyItem();
            tmpItem.friendName = AddfriendName;
            tmpItem.friendSentence = AddfriendSentence;
            arrItem.add(tmpItem);
    }
}

это файл адаптера Java.

Я сделал MainActivity.java файл и XML, и я сделал 3 фрагмента Java-файлов и функцию табуляции, и я вставил widget.ListView в первый фрагмент, и сделал Java-файл (для функции адаптера), но я получаю ошибка при вставке widget.listView в первый фрагмент. Как я могу решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...