2016-01-11 22 views
7

私はリストビューをスクロールするために4日間疲れましたが、私はできなかったし、誰かがCoordinatorLayoutを使用していたのでRecyclerViewを使用するように勧めました。 RecyclerViewを理解して実装した後も、それと同じエラーが発生します。それは今私は何をすべきなのですか?私はあきらめるように感じる。私はどこにも行かない。RecyclerViewはスクロールしません

@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; 
} 

ここで私のlist.xmlにはxmlがあります。ポケットベルにはこれも投稿する必要がありますか?

<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" /> 

助けてください。 これは私のMainActivtyのxmlです。

<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> 

これは私の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); 

     }}} 

これはそれです。私はすべてのことがそれに関連していると思う。 error.Rememberスクロールバーが来ると消え見つけてください、まだ何のスクロール

+0

あなたのコードは大丈夫だと思われますので、他にもいくつか問題があり、何が分からないようです。サンプルプロジェクトを共有できますか、アダプターの実装方法に関する詳細情報はありますか? –

+0

もう一度私の質問を確認してください@MidhunMP –

+0

あなたのリサイクラビューはスクロールしていないか、遅れていますか? –

答えて

3

は、あなたがそのViewPager<include layout="@layout/content_main" /> に問題があったように思えるん

はこのようにそれを使用してください(私はアンドロイドスタジオプレビューで表示されます)。:

<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> 

これで動作するはずです。

+0

ありがとうございました。 CoordinatorLayoutを使用する場合、単純なScrollViewsにもnestedScrollViewを使用します。 –

+0

あなたがそれをしてくれてうれしい;)あなたはこの回答に示唆を与えることができますまたは編集も、私はそれをチェックし、同じ問題を抱えていた男のためにそれを受け入れる。 – Mohsen

3

AppBarLayoutの外にViewPagerを移動すると、私の問題が解決しました。

+0

これは私の問題を解決した –

関連する問題