怎样才能使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透明吗的主要内容,如果未能解决你的问题,请参考以下文章
ConstraintLayout中的Android RecyclerView不滚动