Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RecyclerView not scrolling

I got exhausted for 4 days to get my listview to scroll but i couldn't and then someone suggested to use RecyclerView as i was using CoordinatorLayout so i did. Now after understanding and implementing RecyclerView still it has the same error. it doesn't scroll now what am i supposed to do??? i feel like giving up. i have nowhere to go.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_contacts_list, container, false);
    DataBaseOperations hell = new DataBaseOperations(getActivity());
    SQLiteDatabase db = hell.getReadableDatabase();
    String[] columns = {mDatabase.Tableinfo.ID,mDatabase.Tableinfo.Contacts_phone,mDatabase.Tableinfo.Contacts_name,mDatabase.Tableinfo.Contact_pic};
    Cursor Contacts = db.query(mDatabase.Tableinfo.contacts, columns, null, null, null, null, null);
    Toast.makeText(getContext(),"come on"+Contacts.getCount(),Toast.LENGTH_SHORT).show();
    RecyclerView contacts = (RecyclerView) view.findViewById(R.id.contacts);
    contacts.hasFixedSize();
        RecyclerView.LayoutManager llv = new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false);
        contacts.setLayoutManager(llv);
        Context t = getContext();
        MyContactsRecyclerViewAdapter lv = new MyContactsRecyclerViewAdapter(Contacts,t);
        contacts.setAdapter(lv);

            return view;
}

here is xml for my list.xml and it is in a pager should i post code for that too????

<android.support.v7.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/contacts"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:scrollbars="vertical"
     tools:listitem="@layout/fragment_contacts" />

Any help would be appreciated. this is xml for my MainActivty.

<android.support.design.widget.CoordinatorLayout     
    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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".mainactivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            />


        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabMode="fixed"
            app:tabGravity="fill"

            />
        <android.support.v4.view.ViewPager
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/backscreen3"

            />


    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />

<!-- content_main doesn't really have anything. -->

</android.support.design.widget.CoordinatorLayout>

This is my RecyclerAdapter.

public class MyContactsRecyclerViewAdapter extends RecyclerView.Adapter<MyContactsRecyclerViewAdapter.ViewHolder> {

    private Cursor cursor;
    private Context mcontext;
    private View view;
    public MyContactsRecyclerViewAdapter(Cursor cur, Context con){
                cursor = cur;
                mcontext = con;
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.fragment_contacts, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, int position) {
            cursor.moveToPosition(position);
            String nam = cursor.getString(cursor.getColumnIndex(mDatabase.Tableinfo.Contacts_name));
            String phon = cursor.getString(cursor.getColumnIndex(mDatabase.Tableinfo.Contacts_phone));
            byte[] b = cursor.getBlob(cursor.getColumnIndex(mDatabase.Tableinfo.Contact_pic));
            holder.name.setText(nam);
            holder.phone.setText(phon);
        if (b==null) {
            Profile bla = new Profile();
         holder.pic.setImageBitmap(bla.getRoundedShape(BitmapFactory.decodeResource(mcontext.getResources(), R.drawable.samplepro),60,60));
        }   else   {
         holder.pic.setImageBitmap(BitmapFactory.decodeByteArray(b,0,b.length));
        }
    }


    @Override
    public int getItemCount() {
        if(cursor != null){
        return cursor.getCount();}
        return 0 ;
    }


    public class ViewHolder extends RecyclerView.ViewHolder {
        public final View mView;
        public TextView name;
        public TextView phone;
        public ImageView pic;

        public ViewHolder(View view) {
            super(view);
            mView = view;
            pic = (ImageView) view.findViewById(R.id.image);
            phone = (TextView) view.findViewById(R.id.phone);
            name = (TextView)view.findViewById(R.id.name);

        }}}

This is it. I think every thing related to it. Please find an error.Remember ScrollBars comes and disappears but still no scrolling

like image 272
Umer Asif Avatar asked Jan 11 '16 19:01

Umer Asif


2 Answers

Seems like you had a problem in <include layout="@layout/content_main" /> with that ViewPager.(as i see in android studio preview)

Use it like this:

<android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.example.umerasif.chattris.Chattris">


<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme">


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize" />

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabGravity="fill"
        app:tabMode="fixed" />

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="470dp"
        android:layout_weight="1"
        android:background="@android:color/darker_gray"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.AppBarLayout>

it should work now.

like image 62
ʍѳђઽ૯ท Avatar answered Oct 09 '22 06:10

ʍѳђઽ૯ท


Moving the ViewPager outside the AppBarLayout solved my problem.

like image 41
Ian Wambai Avatar answered Oct 09 '22 05:10

Ian Wambai