2015-10-28 58 views
0

嗨,下面的代碼顯示所有的圖像到gridview.gridview圖像中顯示的是正確的。默認的gridview會給滾動選項,現在滾動圖像不能平滑滾動。Gridview滾動圖像在android中運行不正常

任何一個可以幫助我。如何順利滾動所有圖像像正常scrolling.this是我下面的代碼的任何地方我沒有錯誤,請幫我

的Java

public class GridFragment2 extends Fragment { 

    private static final String TAG = GridFragment.class.getSimpleName(); 
public static boolean isSelectedGrid2; 
    private GridView mGridView; 
    private ProgressBar mProgressBar; 

    private GridViewAdapter2 mGridAdapter; 
    private ArrayList<GridItem> mGridData; 
    private String FEED_URL = "http://javatechig.com/?json=get_recent_posts&count=45", searchKey; 
    String vv; 
    LinearLayout top; 
    View hr; 

    String catid; 



    SharedPreferences imgSh; 
    SharedPreferences p, got; 



    public GridFragment2() { 
    } 

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

     View rootView = inflater.inflate(R.layout.activity_gridview2, container, false); 

     mGridView = (GridView)rootView.findViewById(R.id.gridView); 
     mProgressBar = (ProgressBar)rootView.findViewById(R.id.progressBar); 
     top = (LinearLayout)rootView.findViewById(R.id.top); 
     hr = rootView.findViewById(R.id.hr); 
     top.setVisibility(View.GONE); 
     hr.setVisibility(View.GONE); 



     imgSh = this.getActivity().getSharedPreferences("data", Context.MODE_APPEND); 
     p = this.getActivity().getSharedPreferences("gridData", Context.MODE_APPEND); 
     got = this.getActivity().getSharedPreferences("gotData", Context.MODE_APPEND); 

     //Initialize with empty data 
     mGridData = new ArrayList<>(); 
     mGridAdapter = new GridViewAdapter2(rootView.getContext(), R.layout.grid_item_layout2, mGridData); 
     mGridView.setAdapter(mGridAdapter); 

     //Grid view click event 
     mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       //Get item at position 
       isSelectedGrid2=true; 
       String catalogueID = p.getString("SelectedCatalogueIdFromGrid1", ""); 
       GridItem item = (GridItem) parent.getItemAtPosition(position); 
       Intent intent = new Intent(getActivity(), ImageGallery.class); 
       ImageView imageView = (ImageView) v.findViewById(R.id.grid_item_image); 
       int[] screenLocation = new int[2]; 
       imageView.getLocationOnScreen(screenLocation); 
       SharedPreferences prefPosition=getActivity().getSharedPreferences("positionPref", Context.MODE_PRIVATE); 
       SharedPreferences.Editor positionEditor=prefPosition.edit(); 
       positionEditor.putInt("position", position); 
       positionEditor.commit(); 
       //Pass the image title and url to DetailsActivity 
       intent.putExtra("left", screenLocation[0]). 
         putExtra("top", screenLocation[1]). 
         putExtra("width", imageView.getWidth()). 
         putExtra("height", imageView.getHeight()). 
         putExtra("title", item.getTitle()). 
         putExtra("image", item.getImage()). 
         putExtra("catid", catalogueID).putExtra("position",position); 

       // Log.d("image", (item.getImage()).toString()); 

       //Start details activity 
       getActivity().finish(); 
       startActivity(intent); 
      } 
     }); 

     //Start download 
     new AsyncHttpTask().execute(FEED_URL); 
     mProgressBar.setVisibility(View.VISIBLE); 

     return rootView; 
    } 



    //Downloading data asynchronously 
    public class AsyncHttpTask extends AsyncTask<String, Void, Integer> { 

     @Override 
     protected Integer doInBackground(String... params) { 
      Integer result = 1; 

      parseResult(); 

      return result; 

     } 
     @Override 
     protected void onPostExecute(Integer result) { 
      // Download complete. Lets update UI 

      if (result == 1) { 
       mGridAdapter.setGridData(mGridData); 
      } else { 
       Toast.makeText(getActivity().getBaseContext(), "Failed to fetch data!", Toast.LENGTH_SHORT).show(); 
      } 

      //Hide progressbar 
      mProgressBar.setVisibility(View.GONE); 
     } 
    } 


    String streamToString(InputStream stream) throws IOException { 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream)); 
     String line; 
     String result = ""; 
     while ((line = bufferedReader.readLine()) != null) { 
      result += line; 
     } 

     // Close stream 
     if (null != stream) { 
      stream.close(); 
     } 
     return result; 
    } 


    private void parseResult() { 


     catid = p.getString("SelectedCatalogueIdFromGrid1", ""); 
     int clickedPosn = p.getInt("clickedPosition", 0); 
     int count = p.getInt("numOfImagesInside"+catid+clickedPosn, 0); 

     Log.d("counterman-id", String.valueOf(count)); 

     GridItem item; 
     for (int i = 0; i < count; i++) { 

      item = new GridItem(); 

      item.setTitle(""); 
      // item.setImage("file://" + Environment.getExternalStorageDirectory() + "/" + "thumbImage" + catid + i + ".jpg"); 
      item.setImage("/data/data/com.example.adaptiz.tanishq/"+"thumbImage" + catid + i+".jpg"); 
      // item.setImage(imgSh.getString("thumb" + i, "")); 
      mGridData.add(item); 
     } 

    } 

適配器

public class GridViewAdapter2 extends ArrayAdapter<GridItem> { 

    //private final ColorMatrixColorFilter grayscaleFilter; 
    private Context mContext; 
    private int layoutResourceId; 
    private ArrayList<GridItem> mGridData = new ArrayList<GridItem>(); 

    public GridViewAdapter2(Context mContext, int layoutResourceId, ArrayList<GridItem> mGridData) { 
     super(mContext, layoutResourceId, mGridData); 
     this.layoutResourceId = layoutResourceId; 
     this.mContext = mContext; 
     this.mGridData = mGridData; 
    } 


    /** 
    * Updates grid data and refresh grid items. 
    * 
    * @param mGridData 
    */ 
    public void setGridData(ArrayList<GridItem> mGridData) { 
     this.mGridData = mGridData; 
     notifyDataSetChanged(); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     ViewHolder holder; 



     if (row == null) { 
      LayoutInflater inflater = ((Activity) mContext).getLayoutInflater(); 
      row = inflater.inflate(layoutResourceId, parent, false); 
      Typeface type_normal = Typeface.createFromAsset(getContext().getAssets(), "HelveticaNeue-Light.otf"); 

      holder = new ViewHolder(); 
      holder.titleTextView = (TextView) row.findViewById(R.id.grid_item_title); 
      holder.titleTextView.setTypeface(type_normal); 

      holder.download=(ImageView)row.findViewById(R.id.img); 

      holder.imageView = (ImageView) row.findViewById(R.id.grid_item_image); 
      row.setTag(holder); 
     } else { 
      holder = (ViewHolder) row.getTag(); 
     } 

     GridItem item = mGridData.get(position); 

     holder.titleTextView.setText(Html.fromHtml(item.getTitle())); 


     File image = new File(item.getImage(), ""); 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inTempStorage = new byte[16*1024]; 
     options.inPurgeable = true; 
     Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath(), options); 
     // bitmap = Bitmap.createScaledBitmap(bitmap, 230, 230, true); 
     Log.d("the bitmap size", String.valueOf(bitmap.getWidth() + " " + bitmap.getHeight())); 
     holder.imageView.setImageBitmap(bitmap); 
     //bitmap=null; 

     // Picasso.with(mContext).load(item.getImage()).into(holder.imageView); 
     return row; 
    } 

    static class ViewHolder { 
     TextView titleTextView; 
     ImageView imageView; 
     ImageView download; 
    } 

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/toprel" 
    > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="30dp" 
     android:id="@+id/top" 
     android:orientation="horizontal" 
     android:layout_alignParentTop="true" 
     > 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="30dp" 
      android:id="@+id/searchTitle" 
      android:layout_centerVertical="true" 
      android:text="Search" 
      android:textSize="15sp" 
      android:gravity="left" 
      android:layout_toRightOf="@+id/leftTitle" 
      android:layout_toEndOf="@+id/leftTitle" /> 

     <EditText 
      android:inputType="text" 
      android:layout_centerVertical="true" 
      android:layout_width="200dp" 
      android:layout_height="30dp" 
      android:id="@+id/searchBox" 
      android:background="@drawable/searchbg2x" 
      android:layout_toRightOf="@+id/searchTitle" 
      android:layout_toEndOf="@+id/searchTitle" 
      android:layout_marginLeft="15dp" 
      android:singleLine="true" 
      android:imeOptions="actionSearch" 



      /> 


    </LinearLayout> 

    <View 
     android:layout_marginTop="5dp" 
     android:layout_width="match_parent" 
     android:layout_height="1dp" 
     android:id="@+id/hr" 
     android:background="#000000" 
     android:layout_below="@id/top" 
     /> 



    <GridView 
     android:layout_below="@+id/hr" 
     android:id="@+id/gridView" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_margin="5dp" 
     android:columnWidth="200dp" 
     android:gravity="center" 
     android:numColumns="4" 
     android:stretchMode="columnWidth" 
     android:verticalSpacing="5dp" 
     android:listSelector="@android:color/transparent" 
     android:clickable="true" 
     android:fastScrollEnabled="true"/> 

    <ProgressBar 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/progressBar" 
     android:layout_centerInParent="true" 
     android:visibility="gone"/> 


    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="20dp" 
     android:orientation="horizontal" 
     android:id="@+id/userlayout" 
     android:layout_alignParentTop="true" 
     android:visibility="gone" 
     android:layout_alignRight="@+id/gridView" 
     android:layout_alignEnd="@+id/gridView" 

     > 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:textSize="18sp" 
      android:id="@+id/userView" 
      android:text="username" 

      /> 

     <ImageView 
      android:layout_marginLeft="8dp" 
      android:layout_marginTop="8dp" 
      android:layout_width="20dp" 
      android:layout_height="10dp" 
      android:background="@drawable/icon" 
      /> 

    </LinearLayout> 



    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="" 
     android:textSize="15sp" 
     android:layout_gravity="bottom" 
     android:layout_alignBottom="@+id/gridView" 
     android:layout_centerHorizontal="true" /> 
</RelativeLayout> 

回答