Как сделать каждый элемент (изображение и имя) в GridView окруженным квадратом в Android? - PullRequest
0 голосов
/ 18 февраля 2019

В GridView Одно изображение и текст поступают как элемент. Поэтому я хочу сделать квадрат в качестве границы для каждого изображения и текста внутри этого квадрата, как и изображение.Каждый элемент (изображение и имя) в GridView окружен квадратом в Android, но не может создать изображение, подобное изображенному ниже.enter image description here Что касается изображения, я хочу добавить закругленный угол каждого текста, и изображение должно быть окружено квадратом, подобным изображению, как я могу это сделать?Что я могу сделать для Марка окружен квадратом каждого элемента gridview согласно изображению

xml:

<?xml version="1.0" encoding="utf-8"?>

  <LinearLayout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="#d3d3d3"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    >

        <GridView
            android:id="@+id/gridView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:numColumns="auto_fit"
            android:columnWidth="90dp"
            android:horizontalSpacing="10dp"
            android:verticalSpacing="18dp"
            android:gravity="center"
            android:stretchMode="columnWidth">    
        </GridView>
    </LinearLayout>

Фрагмент

public class GridCateFragment   extends Fragment {

//Web api url

    View rootView;
    //RecyclerView recyclerViewInstitutions;
    //CustomListAdapter institutionAdapter;
    //ArrayList<Movie> institutions;

    public static final String TAG_IMAGE_URL = "image";
    public static final String TAG_NAME = "name";

    //GridView Object
    private GridView gridView;

    //ArrayList for Storing image urls and titles
    private ArrayList<String> images;
    private ArrayList<String> names;
    public GridCateFragment() {    
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_gridcatefragment, container, false);
        gridView = (GridView) rootView.findViewById(R.id.gridView);

        images = new ArrayList<>();
        names = new ArrayList<>();
        getData();
//        getClientsList();
        return rootView;

    }

    private void getData(){
        String tag_string_req = "req_register";
        String url = AppConfig.Base_Url +AppConfig.App_api+AppConfig.URL_Cat;
        //Showing a progress dialog while our app fetches the data from url
        final ProgressDialog loading = ProgressDialog.show(getContext(), "Please wait...","Fetching data...",false,false);

        //Creating a json array request to get the json from our api

        final StringRequest jsonObjReq = new StringRequest(Request.Method.GET,url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                        //Dismissing the progressdialog on response
                        loading.dismiss();

                try {    
                    String jsonObjReq = null;
                    JSONObject obj = new JSONObject(String.valueOf(response));
                    String status = obj.getString("status");
                    String message = obj.getString("message");
                    Log.d(TAG, "Register Response1: " + status);
                    Log.d(TAG, "Register Response2: " + message);
                    JSONObject obj1 = new JSONObject(String.valueOf(obj));
                    JSONObject result = obj.getJSONObject("result");
                    Log.d(TAG, "Register Response3: " + result);
                    JSONArray category = result.getJSONArray("category");
                    Log.d(TAG, "Register Response4: " + category);

                    for (int i = 0; i < category.length(); i++) {
                        JSONObject object = category.getJSONObject(i);
                        Log.d(TAG, "Register Response5: " + object);
                        String k =object.getString("image");
                        String l=(object.getString("name"));
                        Log.d("feedArray", " " + k);
                        Log.d("feedArray1", " " + l);
                        //getting image url and title from json object
                        names.add(l);
                        images.add(k);

                        Log.d("feedArrayListAfterParse", " " + object.getString("name"));
                        Log.d("feedArrayListAfterPa1", " " + object.getString("id"));
                        Log.d("feedArrayListAfte", " " + object.getString("image"));
                    }       
                }
catch (JSONException e){
                        e.printStackTrace();
                    }


                GridViewAdapter gridViewAdapter = new GridViewAdapter(getContext(),names,images);

                //Adding adapter to gridview
                gridView.setAdapter(gridViewAdapter);

                }
              },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {    
                    }
                }
        );

        //Creating a request queue
        RequestQueue requestQueue = Volley.newRequestQueue(getContext());
        //Adding our request to the queue
        requestQueue.add(jsonObjReq);
    }

}

Адаптер

public class GridViewAdapter extends BaseAdapter {

    //Imageloader to load images
    private ImageLoader imageLoader;

    //Context
    private Context context;

    //Array List that would contain the urls and the titles for the images
    private ArrayList<String> names;
    private ArrayList<String> images;

    public GridViewAdapter (Context context, ArrayList<String> names, ArrayList<String> images){
        //Getting all the values
        this.context = context;
        this.names = names;
        this.images = images;

    }

    @Override
    public int getCount() {
        return images.size();
    }

    @Override
    public Object getItem(int position) {
        return images.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //Creating a linear layout
        LinearLayout linearLayout = new LinearLayout(context);
        linearLayout.setOrientation(LinearLayout.VERTICAL);

        //Creating a textview to show the title
        TextView textView = new TextView(context);
        textView.setText(names.get(position));

        //NetworkImageView
        NetworkImageView networkImageView = new NetworkImageView(context);

        //networkImageView.setImageResource(mThumbIds[position]);
        networkImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        networkImageView.setLayoutParams(new GridView.LayoutParams(200, 200));

        //Initializing ImageLoader
        imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
        imageLoader.get(images.get(position), ImageLoader.getImageListener(networkImageView, R.mipmap.ic_launcher, android.R.drawable.ic_dialog_alert));

        //Setting the image url to load
        networkImageView.setImageUrl(images.get(position),imageLoader);

        //Scaling the imageview
        networkImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        //networkImageView.setLayoutParams(new GridView.LayoutParams(200,200));

        //Adding views to the layout

        linearLayout.addView(networkImageView);
        linearLayout.addView(textView);

        //Returnint the layout
        return linearLayout;
    }
}
...