- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Android Studio 的初学者。我的目标是使用 CardView 将我的数据从使用 PHP 和 MySQL 的 Wamp 服务器加载到 recyclerView 中。但一切运行良好。但是当我运行我的应用程序时,我没有得到输出。
我的依赖是这个,请忽略Firebase one
compile 'com.facebook.android:facebook-android-sdk:[4,5)'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.google.firebase:firebase-core:10.2.4'
compile 'com.google.firebase:firebase-auth:10.2.4'
compile 'com.google.android.gms:play-services-auth:10.2.4'
compile 'com.android.support:design:25.3.1'
compile 'com.google.firebase:firebase-database:10.2.4'
compile 'com.squareup.okhttp3:okhttp:3.6.0'
compile 'com.mcxiaoke.volley:library-aar:1.0.0'
testCompile 'junit:junit:4.12'
Main2Activity 类
public class Main2Activity extends AppCompatActivity {
ProgressDialog progressDialog;
List<companyCardDetailsClass> rowListItem;
private RecyclerView recyclerView;
private GridLayoutManager gridLayoutManager;
private CompanyCardRecycleViewAdapterClass adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
rowListItem = new ArrayList<>();
recyclerView = (RecyclerView)findViewById(R.id.recycler_view1) ;
gridLayoutManager = new GridLayoutManager(this,1);
recyclerView.setLayoutManager(gridLayoutManager);
recyclerView.setHasFixedSize(true);
adapter = new CompanyCardRecycleViewAdapterClass(this, rowListItem);
recyclerView.setAdapter(adapter);
load_data_from_server(0);
}
private void load_data_from_server(int id) {
AsyncTask<Integer,Void,Void> task = new AsyncTask<Integer, Void, Void>() {
@Override
protected Void doInBackground(Integer... integers) {
//send request to server for data
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("http://192.168.161.2/stamploaddatabase/getMerchantDetails.php").build();
try {
//get response from server in form of JSon array
Response response = client.newCall(request).execute();
JSONArray array = new JSONArray(response.body().string());
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
companyCardDetailsClass data = new companyCardDetailsClass(object.getInt("user_id"), object.getString("companyname"), object.getString("location"),
object.getInt("logo"));
rowListItem.add(data);
}
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
adapter.notifyDataSetChanged();
}
};
task.execute(id);
}
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app2="http://schemas.android.com/apk/res-auto"
xmlns:card_view="http://schemas.android.com/tools"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_margin="5dp"
card_view:cardCornerRadius="4dp"
card_view:contentPadding="10dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/image_company"
android:layout_gravity="center_horizontal"
android:scaleType="centerCrop"
android:layout_weight="0.25"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="8px">
<TextView
android:text="Text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/name_company"
card_view:textSize="14sp"
android:layout_weight="2.37"
android:textColor="@android:color/holo_red_light" />
<TextView
android:text="TextView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/address_company"
card_view:textSize="12sp"
android:layout_weight="0.22"
android:layout_below="@+id/name_company"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/linear_layout2"
card_view:orientation="horizontal"
android:layout_gravity="right"
android:orientation="horizontal"
>
<Button
android:text="Redeem"
android:layout_width="112dp"
android:layout_height="32dp"
android:id="@+id/btn_redeem1"
android:paddingRight="20dp"
card_view:text="Redeem"
android:layout_weight="0.25"
android:background="@drawable/shape"/>
card_view:background="@color/btn_redeem"/>
<ImageView
android:layout_width="51dp"
android:layout_height="35dp"
android:src="@drawable/ic_like"
android:id="@+id/like"
/>
<ImageView
android:layout_width="51dp"
android:layout_height="35dp"
android:src="@drawable/ic_share"
android:id="@+id/share"
/>
</LinearLayout>
适配器和支架
public class CompanyCardRecycleViewAdapterClass extends RecyclerView.Adapter<CompanyCardRecycleViewAdapterClass.ViewHolder> {
List<companyCardDetailsClass> itemList;
private Context context;
public CompanyCardRecycleViewAdapterClass(Context context, List<companyCardDetailsClass> itemList ) {
super();
this.itemList = itemList;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.company_card_list, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.CompanyName.setText(itemList.get(position).getCompanyname());
holder.CompanyAddress.setText(itemList.get(position).getLocation());
holder.CompanyProfilePhoto.setImageResource(itemList.get(position).getImageCpny());
}
@Override
public int getItemCount() {
return this.itemList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView CompanyName;
public TextView CompanyAddress;
public ImageView CompanyProfilePhoto;
public ImageView likeImage;
public ImageView shareImage;
public Button RedeemBtn;
public ViewHolder(View view) {
super(view);
CompanyAddress =(TextView)itemView.findViewById(R.id.address_company);
CompanyName = (TextView)itemView.findViewById(R.id.name_company);
CompanyProfilePhoto = (ImageView)itemView.findViewById(R.id.image_company);
likeImage = (ImageView)itemView.findViewById(R.id.like);
shareImage = (ImageView)itemView.findViewById(R.id.share);
RedeemBtn = (Button)itemView.findViewById(R.id.btn_redeem1);
final RecyclerView recyclerView = (RecyclerView)itemView.findViewById(R.id.recycler_view1);
}
}
}
**我的Java类数据**
public class companyCardDetailsClass {
private int id_company;
private String companyname;
private String location;
private int ImageCpny;
public companyCardDetailsClass() {
}
public companyCardDetailsClass(int id_company, String companyname, String location, int imageCpny) {
this.id_company = id_company;
this.companyname = companyname;
ImageCpny = imageCpny;
this.location = location;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public int getIdCompany(){return id_company;}
public void setId_company(int id_company){this.id_company = id_company;}
public String getCompanyname (){
return companyname;
}
public void setCompanyname (String companyname){
this.companyname = companyname;
}
public int getImageCpny(){
return ImageCpny;
}
public void setImageCpny(int ImageCpny){
this.ImageCpny = ImageCpny;
}
}
然后是我的布局activity Layout with recyclerView
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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:id="@+id/content_main2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:card_view="http://schemas.android.com/tools"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.drake.stamploadproject.Main2Activity"
tools:showIn="@layout/activity_main2">
<android.support.v7.widget.RecyclerView
android:id = "@+id/recycler_view1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_marginTop="5dp">
</android.support.v7.widget.RecyclerView>
cardView 布局
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app2="http://schemas.android.com/apk/res-auto"
xmlns:card_view="http://schemas.android.com/tools"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_margin="5dp"
card_view:cardCornerRadius="4dp"
card_view:contentPadding="10dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/image_company"
android:layout_gravity="center_horizontal"
android:scaleType="centerCrop"
android:layout_weight="0.25"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="8px">
<TextView
android:text="Text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/name_company"
card_view:textSize="14sp"
android:layout_weight="2.37"
android:textColor="@android:color/holo_red_light" />
<TextView
android:text="TextView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/address_company"
card_view:textSize="12sp"
android:layout_weight="0.22"
android:layout_below="@+id/name_company"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/linear_layout2"
card_view:orientation="horizontal"
android:layout_gravity="right"
android:orientation="horizontal"
>
<Button
android:text="Redeem"
android:layout_width="112dp"
android:layout_height="32dp"
android:id="@+id/btn_redeem1"
android:paddingRight="20dp"
card_view:text="Redeem"
android:layout_weight="0.25"
android:background="@drawable/shape"/>
card_view:background="@color/btn_redeem"/>
<ImageView
android:layout_width="51dp"
android:layout_height="35dp"
android:src="@drawable/ic_like"
android:id="@+id/like"
/>
<ImageView
android:layout_width="51dp"
android:layout_height="35dp"
android:src="@drawable/ic_share"
android:id="@+id/share"
/>
</LinearLayout>
最佳答案
运行
@Override
protected void onPostExecute(Void aVoid) {
adapter = new CompanyCardRecycleViewAdapterClass(this,rowListItem);
recyclerView.setAdapter(adapter);
}
您在开始时设置了空列表。 notifyDataSetChange 无法按您预期的方式工作。您应该从 AsyncTask 返回数组或更新 Adapter onPostExecute。
您可以在这里找到更优雅的替代方案:https://stackoverflow.com/a/35148283/6159609
关于php - 从 PHP/MySQL 本地推送数据时,CardView 不显示在我的 RecycleView 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43828000/
我已将 RecycleView 添加到我的 XML 中,如下所示: 我在 build.gradle 中的依赖项定义如下: dependencies { implementation
我正在尝试做一件简单的事情,它将所有图像从外部存储中获取到回收 View 并显示它们。 我的问题是,出于某种原因,我收到了 null,但我不知道为什么。我成功地将所有图像放入字符串数组列表中。然后在
我正在使用 this处理我的图书馆 RecycleView添加项目。我有一个 ImageView 的布局和一个类(class)。我有一个对象列表,我想将它们添加到 RecycleView . 基本上是
我正在尝试为我的应用实现搜索过滤器,但我不知道该怎么做。我看到了一个问题 this one here但这只会让我更加困惑。这就是我到目前为止所做的:我在我的主要 Activity 中这样调用 frag
我有这样的布局 我希望 admob View 占用空间,然后所有剩余的 View 都应由 recycleview 占用。发生的事情是
我正在从 Recyclerview 获取数据 我正在我的应用程序中添加 searchview 过滤器,但是当我搜索大写和小写文本时没有找到结果我认为可能会导致字符串出现问题,请帮助我解决这个问题!!
我已经为 RecycleViews 构建了一个自定义渲染器。 我一直遇到一个问题,我想不出可能的解决办法,就在这里。 每当用户滚动 RecycleView 时,屏幕上显示的下一个项目就会乱序显示,就好
我正在尝试创建一个简单的考勤应用程序。 程序启动时,所有标签都在取消选择列表中 预期行为:选择任何标签时,数据将移动到所选列表,现在所选标签位于连接列表的末尾。然后 RecycleView 刷新以显示
我通过 Web 服务从服务器获取数据并在回收 View 中显示。每个请求我从服务器获取 5 个项目。我调试我的代码并检查当我滚动到 recycleview 的末尾时,新数据正在从服务器获取,但它没有添
更新: 实际问题出在 CoordinatorLayout 而不是 RecycleView。 我没有使用 RecycleView,而是在 ScrollView 中尝试了 TextView,这是同样的问题
我有一个带有 CardView 的 Recycleview,我为此实现了一个滑动 handle 选项。当用户向右滑动卡片时需要删除。问题是 Action 非常敏感——当你点击或稍微拖动卡片时,它就会执
我在 LinearLayout 中创建了一个 RecycleView 组件以及其他一些组件。问题是每当我单击 RecycleView 组件中的元素时,它应该在控制台中创建一个 TAG,但事实并非如此。
我正在尝试实现类似于上图的布局将 RecyclerView 与 GridLayoutManager 结合使用,我尝试根据位置设置 setSpanSizeLookup,但无法模仿上面的设计。 有人可以帮
问题来了:我创建了世界上最简单的 RecyclerView,但它只显示第一项。我不明白为什么。感谢您的帮助。 item_layout.xml activity_main.xml
这是我的回收 View 适配器 CategoryAdapter类 public class CategoryRAdapter extends RecyclerView.Adapter { privat
摘要 我在 RecycleView 中有一个 CardView,带有一个播放或停止歌曲的按钮,并且一次只能播放一首歌曲。因此,当我单击其中一个按钮时,所有其他按钮都应该有一个“播放”图标,而单击的按钮
我正在创建一个应用程序,我想在其中使用改造调用 API。并在回收查看器中显示对象。当我尝试使用调用 API 并将对象放入回收查看器的方法时出现错误。 下面是寻呼机适配器的代码。 public clas
我有一个使用 ViewPager 的三选项卡界面设置。在第三个选项卡中,我有一个 CardView,它可以展开/缩回 onclick 以显示更多信息。 CardView 内部是一个 RecyclerV
我正在尝试突出显示一个列表,例如当用户单击一行时,它的背景颜色会发生变化。该应用程序运行良好,但是当我上下滚动列表时,突出显示一行时,其他行也会突然突出显示。以下是显示此行为的测试应用(代码基于 ht
我使用水平 RecyclerView,我的列表项之间的边距是恒定的,我想增加列表项间距,我尝试增加 layout_margin 但没有变化. 下面是我的列表项布局
我是一名优秀的程序员,十分优秀!