2016-07-11 2 views
2

Я пытаюсь установить изображения в viewpager из horizontalscrollview.Как установить изображения в viewpager из horizontalscrollview в android

Я не могу получить идентификатор horizontalscrollview для использования в методе setcurrentItem.

Я пробовал так много вещей, но я не мог.

Вот класс MainActivity

public class MainActivity extends AppCompatActivity { 

    int toplamSayfa = 5; 
    private View btnNext, btnPrev; 
    HorizontalScrollView hs; 
    ImageView imageView = null; 

    private Integer images[] = {R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e}; 

    ViewPager viewPager; 

    LinearLayout myGallery; 


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

     CustomPagerAdapter adapter = new CustomPagerAdapter(this, toplamSayfa); 
     myGallery = (LinearLayout) findViewById(R.id.container); 
     hs = (HorizontalScrollView) findViewById(R.id.scrollview); 
     viewPager = (ViewPager) findViewById(R.id.view_pager); 
     btnNext = findViewById(R.id.next); 
     btnPrev = findViewById(R.id.prev); 

     viewPager.setAdapter(adapter); 
     viewPager.setCurrentItem(0); 

     btnPrev.setOnClickListener(onClickListener(0)); 
     btnNext.setOnClickListener(onClickListener(1)); 

     addImagesToThegallery(); 
    } 

    private void addImagesToThegallery() { 

     final LinearLayout imageGallery = (LinearLayout) findViewById(R.id.container); 

     for (Integer image : images) { 

      imageGallery.addView(getImageView(image)); 


    } 

} 

    private View getImageView(final Integer image) { 
     imageView = new ImageView(getApplicationContext()); 
     LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     lp.setMargins(0, 0, 10, 0); 
     imageView.setLayoutParams(lp); 

     imageView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      //the method where i am stuck 

       viewPager.setCurrentItem(); 

      } 
     }); 



     imageView.setImageResource(image); 

     return imageView; 
    } 


    private View.OnClickListener onClickListener(final int i) { 
     return new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (i > 0) { 

        if (viewPager.getCurrentItem() < viewPager.getAdapter().getCount() - 1) { 
         viewPager.setCurrentItem(viewPager.getCurrentItem() + 1); 
        } 
       } else { 

        if (viewPager.getCurrentItem() > 0) { 
         viewPager.setCurrentItem(viewPager.getCurrentItem() - 1); 
        } 
       } 
      } 
     }; 
    } 
} 
+0

Почему вы используете ViewPager и horizontalscrollview оба? Используйте только ViewPager для подкачки изображений. Не нужно использовать scrollview. – Drv

+0

Вы правы, это возможно. но просто пробую разные вещи :) – kinyas

ответ

2

Update метод addImagesToThegallery сохранить индекс изображения при добавлении изображения в галерею из вашего images массива:

private void addImagesToThegallery() { 
    final LinearLayout imageGallery = (LinearLayout) findViewById(R.id.container); 

    int i = 0; 
    for (Integer image : images) { 
    imageGallery.addView(getImageView(image,i)); 
    i += 1; 
    } 
} 

и использовать index здесь:

private View getImageView(final Integer image, int index) { 
     imageView = new ImageView(getApplicationContext()); 
     LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     lp.setMargins(0, 0, 10, 0); 
     imageView.setLayoutParams(lp); 

     imageView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      //use the index here 

       viewPager.setCurrentItem(index); 

      } 
     }); 



     imageView.setImageResource(image); 

     return imageView; 
    } 
+0

спасибо, это сработало. я бы дал голос за ответ. :) – kinyas

+0

рад, что это помогло, вы можете принять ответ btw –

0

попробовать это, но игнорировать, если-то еще часть:

package com.example.hotel_app_regularuser; 

import android.app.Activity; 
import android.content.Context; 
import android.graphics.Color; 
import android.graphics.Typeface; 
import android.os.Bundle; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.util.TypedValue; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class PageTwo extends Activity { 
ViewPager vpager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_page_two); 
     vpager=(ViewPager)findViewById(R.id.viewPager); 
     PagerAdapter adapter = new customAdapter(PageTwo.this); 
      vpager.setAdapter(adapter); 


    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.page_two, menu); 
     return true; 
    } 

} 


class customAdapter extends PagerAdapter 
{ 
Context context; 
int imageId[]={ 
     R.drawable.chinese, 
     R.drawable.euro, 
     R.drawable.americanfood, 
     R.drawable.continental 

}; 
public customAdapter(Context context) 
{ 
    this.context=context; 
    } 


@Override 
public Object instantiateItem(ViewGroup container,int position) 
{ 
    Typeface type = Typeface.createFromAsset(this.context.getAssets(), "fonts/Confetti.ttf"); 
    LayoutInflater inflater=((Activity)context).getLayoutInflater(); 
    View viewitem=inflater.inflate(R.layout.activity_page_two,container,false); 
    ImageView im=(ImageView)viewitem.findViewById(R.id.imageView1); 
    im.setImageResource(imageId[position]); 
    TextView textView1 = (TextView) viewitem.findViewById(R.id.textView1); 
    if(position==0) 
    { 
    textView1.setText("Chinese"); 
    } 
    if(position==1) 
    { 
    textView1.setText("European"); 
    } 
    if(position==2) 
    { 
    textView1.setText("American"); 
    } 
    if(position==3) 
    { 
    textView1.setText("Continental"); 
    } 
    textView1.setTypeface(type); 
    textView1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 70); 
    textView1.setTextColor(Color.RED); 
    ((ViewPager)container).addView(viewitem); 



    return viewitem; 
      } 
    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return imageId.length; 
    } 

    @Override 
    public boolean isViewFromObject(View arg0, Object arg1) { 
     // TODO Auto-generated method stub 
     return arg0==((View)arg1); 
    } 
    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     // TODO Auto-generated method stub 
     ((ViewPager) container).removeView((View) object); 
    } 

} 

Чтобы создать представление прокрутки, попробуйте этот XML-файл:

<!-- 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".Check_Availability" 
    android:stretchColumns="0,1" 
    android:id="@+id/main_table" 
    android:layout_weight="1" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" /> 

</TableLayout>  
    --> 


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TableLayout android:id="@+id/main_table" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <TableRow android:id="@+id/header"/>      
    </TableLayout> 
</ScrollView> 

Обратите внимание, что идентификатор раздела скомментирован для страницы, использующей макет таблицы. Надеюсь, это поможет!

Смежные вопросы