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
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.
Moving the ViewPager outside the AppBarLayout solved my problem.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With