ListView в ListFragment не прокручивается - PullRequest
0 голосов
/ 29 апреля 2019

Мой список отображается правильно, но он не будет прокручиваться.Предполагается, что его можно прокручивать без использования Scrollview, но я не могу понять, почему он не будет прокручиваться.Я не могу сказать, является ли это мой XML или генерирует мой просмотр списка неправильно.

Снимок экрана ListFragment

SalesmanFragment.java

package com.example.djagung.ui.salesman;

import android.arch.lifecycle.ViewModelProviders;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.example.djagung.R;
import com.example.djagung.ui.salesmen.SalesmenFragment;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;

public class SalesmanFragment extends ListFragment {

    private SalesmanViewModel mViewModel;

    public static SalesmanFragment newInstance() {
        return new SalesmanFragment();
    }

    View view;

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


        getActivity().setTitle("Salesman");

        String json = "[{\"date\": \"April 16, 2019\", \"outlet\" : \"Sumber Alam\", \"sale_amount\" : \"2,000,000\"}, {\"date\": \"April 12, 2019\", \"outlet\" : \"Kali Mas\", \"sale_amount\" : \"2,200,000\"}, {\"date\": \"April 11, 2019\", \"outlet\" : \"Laris\", \"sale_amount\" : \"1,400,000\"}, {\"date\": \"April 9, 2019\", \"outlet\" : \"Sinar Matahari\", \"sale_amount\" : \"5,000,000\"}, {\"date\": \"April 4, 2019\", \"outlet\" : \"Jaya Murni\", \"sale_amount\" : \"1,600,000\"}, {\"date\": \"April 3, 2019\", \"outlet\" : \"Tentrem\", \"sale_amount\" : \"1,700,000\"}, {\"date\": \"April 2, 2019\", \"outlet\" : \"Game\", \"sale_amount\" : \"3,900,000\"}]".toString();

        ArrayList<String> items = new ArrayList<String>();
        view =  inflater.inflate(R.layout.salesman_fragment, container, false);

        try {
            JSONArray jArray = new JSONArray(json);
            Integer len = jArray.length();
            View view =  inflater.inflate(R.layout.salesman_fragment, container, false);
            for (int i = 0; i < jArray.length(); i++) {
                JSONObject row = jArray.getJSONObject(i);
                String date = row.getString("date");
                String outlet = row.getString("outlet");
                String sale_amount = row.getString("sale_amount");
                items.add(date + " - " + outlet + " - " + sale_amount);
            }

            ListView listView = view.findViewById(android.R.id.list);
            ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(getActivity(),  R.layout.salesman_listview, items);
            setListAdapter(mArrayAdapter);

        } catch (JSONException e) {
            Log.d("error", e.toString());
        }

        return view;
    }
    @Override
    //Pressed return button - returns to the results menu
    public void onResume() {
        super.onResume();
        getView().setFocusableInTouchMode(true);
        getView().requestFocus();
        getView().setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){
                    Log.d("back", "start salesmen");
                    Fragment fragment = new SalesmenFragment();
                    FragmentTransaction ft = getFragmentManager().beginTransaction();
                    ft.replace(R.id.mainFrame, fragment);
                    ft.commit();

                    return true;
                }
                return false;
            }
        });
    }


    public void onActivityCreated(@Nullable Bundle savedInstanceState, LayoutInflater inflater, ViewGroup container) {
        super.onActivityCreated(savedInstanceState);
        mViewModel = ViewModelProviders.of(this).get(SalesmanViewModel.class);
        // TODO: Use the ViewModel

    }

}

salesman_listview.xml

<?xml version="1.0" encoding="utf-8"?>
<!--  Single List Item Design -->

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="20dip"
    android:textSize="14dip"
    android:textStyle="bold" >
</TextView>

salesman_fragment.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/salesman"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.salesman.SalesmanFragment">

    <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="wrap_content"
        android:paddingTop="20dp"
        android:weightSum="100"
        android:id="@+id/top_section"
        android:orientation="horizontal">


        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="35"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:maxWidth="100dp"
                android:maxHeight="100dp"
                android:layout_gravity="center"
                android:scaleType="fitCenter"
                android:src="@drawable/blank_profile" />

        </LinearLayout>

        <LinearLayout
            android:layout_marginTop="10dp"
            android:layout_width="0dp"
            android:layout_weight="65"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:padding="3dip"
                android:gravity="right"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="16dip"
                android:textStyle="bold"
                android:text="Name: Hari Utomo" />

            <TextView
                android:gravity="right"
                android:padding="3dip"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="16dip"
                android:textStyle="bold"
                android:text="Code: A001" />

            <TextView
                android:gravity="right"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="3dip"
                android:textSize="16dip"
                android:textStyle="bold"
                android:text="Phone number: 08623452334" />


        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="10dp"
        android:paddingTop="20dp"
        android:paddingRight="10dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/top_section">

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Track Location" />

    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout4">

        <ListView
            android:id="@android:id/list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"></ListView>
    </LinearLayout>

</android.support.constraint.ConstraintLayout>

1 Ответ

0 голосов
/ 29 апреля 2019

Вы должны задать ListView определенную высоту, примерно так:

android:layout_height="200dp"

Конечно, это работает, только если вы заранее точно знаете, насколько большим вы хотите, чтобы ваш ListView был, и это обычно не так.

или используйте ограничения, чтобы определить высоту вашего ListView и задайте ему высоту 0dp, что можно рассматривать как «ограничения соответствия». Другими словами, вы говорите системе сделать высоту ListView настолько высокой, насколько это необходимо для удовлетворения ее верхних и нижних ограничений.

android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...