怎样才能使Android RecyclerView透明吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样才能使Android RecyclerView透明吗相关的知识,希望对你有一定的参考价值。

参考技术A RecyclerView 是android L版本中新添加的一个用来取代ListView的SDK,它的灵活性与可替代性

比listview更好。接下来通过一系列的文章讲解如何使用RecyclerView,彻底抛弃ListView.

介绍
RecyclerView与ListView原理是类似的:都是仅仅维护少量的View并且可以展示大量的数据集。

RecyclerView用以下两种方式简化了数据的展示和处理:

使用LayoutManager来确定每一个item的排列方式。

为增加和删除项目提供默认的动画效果。

你这问题 问的不太 明确啊.....

你来我们群里说吧

这里是开发者互相学习交流的

有大神

让他们给你解释你的疑问 q un号: 188168040本回答被提问者和网友采纳

我怎样才能使它只有登录用户才能查看他自己的成绩?

【中文标题】我怎样才能使它只有登录用户才能查看他自己的成绩?【英文标题】:How can I make it so only the logged in user view his own grade? 【发布时间】:2019-07-21 14:42:01 【问题描述】:

This is the student info table where the student info comes from //这是用户的登录代码,它从学生信息表中获取用户登录信息。

private void btnlogin_Click(object sender, EventArgs e)

        i = 0;
        con.Open();
        MySqlCommand cmd = con.CreateCommand();

        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "select * from stdinfotable WHERE Username='" + textuser.Text + "' and Password= '" + textpass.Text + "'";
        cmd.ExecuteNonQuery();

        DataTable dt = new DataTable();
        MySqlDataAdapter dta = new MySqlDataAdapter(cmd);
        dta.Fill(dt);

        i = Convert.ToInt32(dt.Rows.Count.ToString());

        if(i==0)
        
            MessageBox.Show("Error");
        
        else
        
            this.Hide();
            StudentPage f = new StudentPage();
            f.Show();
            MySqlDataAdapter data = new MySqlDataAdapter("ViewAllGrades", con);
            data.SelectCommand.CommandType = CommandType.StoredProcedure;
            DataTable dtTable = new DataTable();

            data.Fill(dtTable);
            dtTable.Select("Last_Name");

            f.stdGrade.DataSource = dtTable;
            f.stdGrade.Columns[0].Visible = false;
        

        con.Close();

这是返回成绩信息的ViewlAllGrades存储过程

 CREATE DEFINER=`root`@`localhost` PROCEDURE `ViewAllGrades`()
 BEGIN
    SELECT * 
  FROM  Grades;

  END

我正在努力做到只有登录用户才能查看自己的成绩,而不是查看每个用户的成绩。所以我想知道我应该尝试在存储过程中还是在 Visual Studio 中做,我将如何实现这样的事情?此外,我的 ID 主键来自两个表都是自动递增的,所以我不一定要使用这些

【问题讨论】:

这个问题没有足够的信息,并且标签不正确,请更新您的问题添加更多细节。不要在数据库中存储普通密码,永远不要!谷歌关于该主题,例如散列密码。此外,您应该尝试更好地组织代码并为变量赋予有意义的名称。 @Manuel 怎么样?所有标签都是正确的,我使用的每个标签都与我的代码有关。另外,我还可以添加哪些其他详细信息? 像 mysql 和 mysql-workbench 之类的标签在这里并不是必需的,但是除了标签之外,您共享的代码似乎已经按照您所说的做了,在 else 语句中您已经填充了一个表,是代码没有产生预期的效果? @Manuel 没有代码工作,但不是我想要的方式。当用户使用他的凭据登录时,他应该只查看自己的成绩,而不是我需要帮助的其他所有人。我只是希望登录的用户能够查看他自己的信息。 我明白了,您需要按用户 ID 运行查询过滤。不要使用存储过程读取数据,使用 select 语句。当您对用户进行身份验证时,您会返回一个行列表,理论上应该只有一个。检查表 stdinfotable ,查找 ID 并使用该 ID 过滤表成绩 【参考方案1】:

现在您的存储过程正在选择所有成绩。首先要做的是参数化查询,接受用户作为输入,并使用 WHERE 子句仅查找该学生的成绩。如果没有看到您的表格,我无法确切地告诉您这会是什么样子,但举个例子:SELECT * FROM Grades WHERE StudentId = @StudentId;

您需要弄清楚的第二件事是如何获取当前用户的学生ID,然后将其传递给存储过程。再一次,没有看到你的桌子,我很难猜到。看来您已经拥有当前用户的用户名。您是否能够运行查询以从用户名中找到 studentId?如果是这样,那么您首先需要以用户名作为参数运行该过程以获取 studentId。

第三个问题是您的第一个查询。由于没有参数化,容易受到SQL注入攻击。这带来了重大的安全风险。如果有人恶意输入用户名或密码,他们可以转义您打算运行的 SQL 并删除所有表。

希望对您有所帮助!

【讨论】:

我刚刚放入了studentinfo表

以上是关于怎样才能使Android RecyclerView透明吗的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能访问recyclerview的点击按钮?

ConstraintLayout中的Android RecyclerView不滚动

在Android recyclerVIew中单击项目时如何保存状态

我怎样才能让整个文本在edittext中可见?

android view怎样刷新

如何使 Recyclerview 和 Cardview 透明